adat kiolvasás file-ból

Fórumok

Üdv,
a köv. problémában szeretném a segítségeteket kérni: van egy file-om amiben a felhasználók adatait tárolom, a köv. formában:
username1,server1, port1;
username2,server2, port2;
...
ebből a file-ból szertném az adatokat visszakapni úgy hogy fel tudjam dolgozni őket, a köv. kódot irtam rá de vmiért nem működik..


void readFile(){
	FILE *tf = NULL;
	int i,j=0;
	 
	tf = fopen("users.dat", "r");
	if (tf == NULL) {
		g_print("Unable to open data file\n");
		exit(-1);
	}
	while(!feof(tf)){
		while(fgetc(tf) != ','){
			readfile[j].username[i] = fgetc(tf);
			i++;
		}i=0;
		while(fgetc(tf) != ','){
			readfile[j].server[i] = fgetc(tf);
			i++;
		}i=0;
		while(fgetc(tf) != ';'){
			readfile[j].port = fgetc(tf);
			i++;
		}
		j++;
	}
}

az adatokat a köv. struktúrában tárolom (tárolnám):


struct Read {
	char username[80];
	char server[64];
	int port;
} readfile[10];

Előre is köszi a segítséget

Hozzászólások

Nem működik, de miért? Mi a hibaüzenet?

Múlkorokban volt valami probléma valakinél, mikor is az EOF nem helyesen jelzett, mert nem bináris módban nyitotta meg a file-t. Nem tudom nem lehet-e ez a gond itt is? Végig megy a file-on?


while( !feof(tf) ){
    while( !feof(tf) && (ch=fgetc(tf)) != ',' ){
        readfile[j].username[i] = ch;
        i++;
    }

A sorvegeket nem kezeled, az eppen olvasott karakter helyett mindig a kovetkezot irod be, nem figyelsz arra, hanyadik sornal tartasz es tovabbolvasol akkor is, ha mar mind a 11 elore allokalt struktura megtelik, ... Szerintem ird at ugy, hogy beolvasol egy egesz sort, ellenorzod rendben van-e ( azaz ';' van a sorvegjel elott), utana a ',' karakternel darabolod, es a kapott 3 sztringet elrakod.