Miért olvas be rosszul a program C-ben?
Van egy függvényem, amely egy fileból beolvassa a véletlenedik sort. Reallocal csinálom, tudom, hogy szörnyű és nem is ez lesz a végleges, csak egy valami érdekel: miért mindig a második sor lesz az amit beolvas? Hogy oldhatnám meg ezt?
srand(time(NULL));
int num=1;
char* onerow=(char*) malloc(num*sizeof(char));
int row=rand()%1000;
char c;
FILE *fp;
fp = fopen("proba.txt", "r");
for (int i=0; i<=row-1; i++) {
if(i!=row-1) { //not the row we need, jump over it
while(c!='\n')
c=fgetc(fp);
}
if(i==row-1) {
for(int j=0; onerow[j]!='\n'; j++) { //this is what we need
onerow[j]=fgetc(fp);
onerow = (char *) realloc(onerow, ++num*sizeof(char));
}
}
}
onerow[num]='\0';
fclose(fp);
printf("%s\n", onerow);
free(onerow);
}
Ez a kulcs:
while(c!='\n')
_ c=fgetc(fp);
}
Elso sor vege, c-be belekerul az ujsor.
For ciklus kezdodik ujra, megprobal atugrani a masodik soron.
Viszont c-ben meg mindig az elso sor ujsor karaktere van, ezert a kurzor a 2. sorban toporog, mikozben azt hiszed hogy megy vegig a sorokon.
Vegen leszamolt row-1 sort, aztan beolvassa a masodikat.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!