C
fread ve fwrite
fread ve fwrite ile ikili okuma/yazma öğrenirsin.
fread ve fwrite
fread ve fwrite, dosyadan ve dosyaya ikili veri (binary) okuyup yazmanın temel yoludur. Metin değil yapılandırılmış veri için kullanılırlar; örneğin diziler ve struct'lar.
Örnek: int arr[3] = {1, 2, 3}; fwrite(arr, sizeof(int), 3, f);. Bu, 3 tamsayıyı dosyaya yazar. fread(arr2, sizeof(int), 3, f); ile geri okur. Parametreler: veri işaretçisi, eleman boyu, eleman sayısı, dosya. İkili mod için "wb" ve "rb" modları kullanılır; bu, platformlar arası tutarlılık için önemlidir.
fwrite parametreleri
fwrite'ın dört parametresi vardır: veri işaretçisi, eleman boyu, eleman sayısı ve dosya. Bu yapı, tek seferde birden çok elemanı verimli yazmayı sağlar.
Örnek: int x = 42; fwrite(&x, sizeof(int), 1, f);. Tek bir tamsayı yazar. Veya int arr[10]; fwrite(arr, sizeof(int), 10, f); on tamsayı yazar. sizeof(int) çoğu platformda 4'tür; ama bunu elle yazmak yerine sizeof kullanmak taşınabilirliği korur. fread aynı parametre yapısına sahiptir; okunan eleman sayısını döndürür.
Uygulama İkili dizi yaz ve geri oku
int arr[3] = {10, 20, 30}; tanımla. FILE *f = fopen("nums.bin", "wb"); ile aç (NULL denetle). fwrite(arr, sizeof(int), 3, f); ile yaz, fclose(f);. int arr2[3]; tanımla; f = fopen("nums.bin", "rb"); ile yeniden aç (NULL denetle). fread(arr2, sizeof(int), 3, f); ile oku, fclose(f);. printf("%d %d %d\n", arr2[0], arr2[1], arr2[2]); ile yazdır.
Örnek çözümü göster
#include <stdio.h>
int main(void) {
int arr[3] = {10, 20, 30};
FILE *f = fopen("nums.bin", "wb");
if (f == NULL) return 1;
fwrite(arr, sizeof(int), 3, f);
fclose(f);
int arr2[3];
f = fopen("nums.bin", "rb");
if (f == NULL) return 1;
fread(arr2, sizeof(int), 3, f);
fclose(f);
printf("%d %d %d\n", arr2[0], arr2[1], arr2[2]);
return 0;
}
Kendini test et
-
fread/fwrite kavramlarını eşle
- fwrite
- İkili yazma
- fread
- İkili okuma
- sizeof(int)
- Eleman boyu
- 3
- Eleman sayısı
-
fwrite çağrısını tamamla
int x = 42;
fwrite(&x, sizeof(int), ____, f);
Cevabı göster
int x = 42;
fwrite(&x, sizeof(int), 1, f);
-
fwrite'ın ikinci parametresi neyi belirtir?
- Her elemanın boyu
- Toplam bayt
- Tampon işaretçi
- Dosya adı
Cevabı göster
Her elemanın boyu — İkinci parametre her elemanın boyudur (sizeof(int) gibi).
Sıradaki ders: Özet - Dosya I/O