Ciao a tutti, ho dei problemi nel fare il parse di un file strutturato in questo modo:
codice:Milano 33719 5 - cod 23425334 Firenze 32453 5 - cod 298234234 Bologna 9535 3 via_prati,via_3_novembre,via_travai, cod 2892342 Praga 36439 5 - cod 29834234 Roma 97275 3 via_prati,via_3_novembre,via_travai, cod 289234234
e vorrei leggero per poi stampare a schermo una cosa del genere:
codice:Module: Firenze Size: 33719 Nused: 5 Usef by: - Module: Bologna Size: 33719 Nused: 3 Usef by: via_prati,via_3_novembre,via_travai ecc...
Il "cod 23425334" non devo stamparo.
Questo è il mio codice, ma come potete vedere è tutto sfasato:
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int* argc, char* argv[]){ FILE *fp; char *line=NULL; char ch; char mod[256],size[256],nused[256],usedby[1024]; int i=0,fase=0; size_t len=0; ssize_t read; //fp=fopen("/proc/modules","r"); fp=fopen("texto.txt","r"); if(fp==NULL){ perror("Errore nell' apertura del file.\n"); exit(EXIT_FAILURE); } while(read=getline(&line,&len,fp)!=-1){ strcpy(mod,""); strcpy(size,""); strcpy(usby,""); strcpy(car,""); fase=0; for(i=0;i<strlen(line);i++){ if(line[i] == '\t'){ fase++; } else if(fase==0){ car[0]=line[i]; strcat(mod,car); } else if(fase==1){ car[0]=line[i]; strcat(size,car); } else if(fase==2){ car[0]=line[i]; strcat(usby,car); break; } else if(fase==3){ car[0]=line[i]; strcat(usedby,car); break; } } printf("Module : %s\nSize : %s\nUsed by : %s processes:\n\t",mod,size,nused,usedby); } fclose(fp); return 0; }
Questo è l'output SBAGLIATO che mi da:;
Module : Milano 33719 5 - cod 23425334
Size :
Used by : processes:
Module : Firenze 32453 5 - cod 298234234
Size :
Used by : processes:
Module : Bologna 9535 3 via_prati,via_3_novembre,via_travai, cod 2892342
Size :
Used by : processes:
Module : Praga 36439 5 - cod 29834234
Size :
Used by : processes:
Module : Roma 97275 3 via_prati,via_3_novembre,via_travai, cod 289234234
Size :
Used by : processes:
Io non so come risolvere il problema... dove sbaglio?![]()
![]()

Rispondi quotando