Ü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
- 1455 megtekintés
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?
- A hozzászóláshoz be kell jelentkezni
végig megy a file-on, viszont ahogy észrevettem nem akar megállni ezekben az esetekben: while(fgetc(tf) != ',') és while(fgetc(tf) != ';')
nem lehet valami olyasmi hogy a vesszőt és pontosvesszőt ASCII kóddal kéne írni vagy ilyesmi?
- A hozzászóláshoz be kell jelentkezni
while( !feof(tf) ){
while( !feof(tf) && (ch=fgetc(tf)) != ',' ){
readfile[j].username[i] = ch;
i++;
}
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Daraboláshoz strtok vagy strsep függvényeknek nézz utána.
- A hozzászóláshoz be kell jelentkezni