Sanırım sizin aradığınız şey bu değildi, yada ben aradığınız şeyi yanlış
anladım.

freopen() ile yeniden açtığınız stream eski dosyadaki bilgileri tutacaktır.

Sizin aradığınız şey şu gibi geliyor:

int ftruncate(int fd, off_t length);

man 2 ftruncate

Önce dosyanın başına gidin:

rewind(..);

veya

fseek(file, 0, SEEK_SET);

Sonra ftruncate ile dosyanın arka tarafını kesin. freopen()'in overheadine
ihtiyaç yok sanıyorum.

ftruncate(fileno(file),  0);

Diğer yandan bilhassa C ile fopen/fread serisi fonksiyonları değilde, open,
read, write serisi low level fonksiyonları kullanmanız daha iyi netice
verecektir, hele böyle sıradışı beklentileriniz varsa.

C tam bir tembel adam dilidir. Zahmetsizce her şeyi yapar, java gibi aptal
aptal işler açmaz başınıza. Ama 3-5 satır az yazacağım diye düşünürseniz,
genellikle bu size daha çok iş olarak geri döner.

Saygı, sevgi, linux...

2011/3/6 Engin Yüce <[email protected]>

> Atif Bey teşekkürler, aradığım şey buydu. Mucibirahman Bey'e de
> yardımlarından dolayı teşekkür ediyorum.
> -engin
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap