Program sırasıyla aşağıdaki işlemleri gerçekleştirir:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
int rows = 4;
int cols = 5;
int id1, id2, id3;
// İşaretçi oluşturma ve bellek tahsisi
int **array = (int **)malloc(rows * sizeof(int *));
for (id1=0; id1<rows; id1++) {
array[id1] = (int *)malloc(cols * sizeof(int));
}
// Değer atama
for (id1=0, id3=1; id1<rows; id1++) {
for (id2=0; id2<cols; id2++) {
array[id1][id2] = id3++;
}
}
// Değerleri ekrana yazma
for (id1=0; id1<rows; id1++) {
for (id2=0; id2<cols; id2++) {
printf("%d ", array[id1][id2]);
}
printf("\n");
}
// Yazma işlemleri için dosya açma
if ((fp = fopen ("dizi.bin", "wb")) == NULL) {
printf("Dosya açma hatası!");
}
// Tüm dizi değerlerini dosyaya yazma
for (int id1=0; id1<rows; id1++) {
for (int id2=0; id2<cols; id2++) {
if(fwrite(&array[id1][id2], sizeof(int), 1, fp) != 1) {
printf("Dosya yazma hatası!");
}
}
}
// Dosya kapatma
fclose(fp);
// Okuma işlemleri için dosya açma
if ((fp = fopen ("dizi.bin", "rb")) == NULL) {
printf("Dosya açma hatası!");
}
// Tüm dizi değerlerini dosyadan okuma
for (int id1=0; id1<rows; id1++) {
for (int id2=0; id2<cols; id2++) {
if(fread(&array[id1][id2], sizeof(int), 1, fp) != 1) {
printf("Dosya yazma hatası!");
}
}
}
// Dosya kapatma
fclose(fp);
printf("\nDosyadan okunan değerler\n");
// Dosyadan okunan değerleri ekrana yazma
for (id1=0; id1<rows; id1++) {
for (id2=0; id2<cols; id2++) {
printf("%d ", array[id1][id2]);
}
printf("\n");
}
// Tahsis edilen belleğin boşaltılması
for (int id1=0; id1<rows; id1++) {
free(array[id1]);
}
free(array);
return 0;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Dosyadan okunan değerler 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20