"a + b" modunu kullanarak bir dosya açmak istiyorum, yani eğer mevcut değilse otomatik olarak oluşturulur, ancak eğer bunun üzerine yazmak istemiyorum. Dosyayı okuyabilmek ve yazabilmek istiyorum.fseek(), dosya tanıtıcısı "a + b" modunda açılmışsa dosyanın başlangıcına gider mi?
Dosya ikili ve içine belirli bir struct
kayıtlarını kaydetmek istiyorum. Bu yüzden istediğim rekoru fseek()
yapmak ve daha sonra kayıt fwrite()
kullanarak kaydetmek istiyorum. Ancak bu kod sadece dosyanın sonuna kayıt ekler
int saveRecord(MyRecord *pRecord, int pos)
{
FILE* file = fopen(FILENAME, "a+b");
if (file == NULL)
{
printf("Unable to open file %s\n", FILENAME);
return 0;
}
fseek(file, pos * sizeof(MyRecord), SEEK_SET);
fwrite(pRecord, sizeof(MyRecord), 1, file);
fclose(file);
return 1;
}
, şu şekildedir: (FILENAME
dosya adının yanındaki bir #define
iken, MyRecord
bir struct
bir typedef
olan)
kod görünüyor pos
değerini 0 olarak ayarlasaydım bile neden SEEK_SET
ek modda çalışıyor?
"r + b" ile açabileceğimi ve "wb" ile açılmayı başarabileceğimi biliyorum, ancak bunun neden çalışmadığını ve neden ile dosya tanıtıcısını bıraktığını bilmek istiyorum son. Bu davranışın belgelendiği yerlere yapılan göndermeler takdir edildi (çünkü bulamadım veya yanlış anahtar kelimeleri kullanıyorum).
Teşekkürler, ihtiyacım olan cevap. – jbx