bg_getValFromFile() fonksiyonunu kullanarak, "deneme.txt" adıyla kaydedilmiş olan aşağıdakine benzer bir dosyadan ilk sütun adını kullanarak, diğer sütunlardaki verileri okuyabiliriz.
Ahmet Saygılı 27 İskenderun Mehmet Kalem 35 Malatya Aytaç Kalender 57 Ankara Murat Nazik 45 Kars Ekrem Sakin 21 İstanbul
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* bg_getValFromFile(const char* file, const char* kod, int don, char *pdizi);
int main(void)
{
char cdizi[4][20];
int id;
strcpy(cdizi[0], "Murat");
bg_getValFromFile("deneme.txt", cdizi[0], 1, cdizi[1]);
bg_getValFromFile("deneme.txt", cdizi[0], 2, cdizi[2]);
bg_getValFromFile("deneme.txt", cdizi[0], 3, cdizi[3]);
for (id=0; id<4; id++) printf("%s ", cdizi[id]);
return 0;
}
char* bg_getValFromFile(const char* file, const char* kod, int don, char *pdizi)
{
FILE *fp;
long int fsize=0, rsize=0;
char *pfile, *active;
int id;
// Dosyayı okuma için açma
if((fp=fopen(file, "r"))==NULL) {
exit(1);
}
fseek(fp, 0, SEEK_END); // Dosya sonuna erişme
fsize=ftell(fp); // Dosyanın aktif konum yani dosya sonu değerini alma
if(fsize==-1) return NULL;
fseek(fp, 0, SEEK_SET); // Dosya aktif konumunu başa alma
pfile = (char *) malloc((fsize+1) * sizeof(char)); // Dinamik bellek tahsisi
rsize = fread(pfile, sizeof(char), fsize, fp); // Dosya içeriğini okuma
pfile[fsize] = '\0';
active = strstr(pfile, kod);
if (active) {
for (id=0; id<don; id++) {
active = strstr(active, " ");
active++;
}
sprintf(pdizi, "%.*s", (don>2) ? strchr(active, '\n')-active : strchr(active, ' ')-active, active);
}
fclose (fp); // Dosya kapatma
free(pfile); // Bellek boşaltma
return pdizi;
}
Yukarıdaki programı derleyip çalıştırdığımızda, aşağıdaki ifadeleri ekrana yazar:
Murat Nazik 45 Kars