PDA

Visualizza la versione completa : [C++] Se ho uno spazio dopo il valore, il confronto non avviene


freetom
08-12-2010, 13:40
int main (int argc, char *argv[]) {


FILE *a=fopen("ritardi.txt","r");
FILE *b=fopen("quartinescelte.txt","w");
char buf[1024];

while( fgets(buf,1024,a)) if(strstr(buf," colpirimanenti: 0") != NULL || strstr(buf," colpirimanenti: 1 ") != NULL || strstr(buf," colpirimanenti: 2 ") != NULL || strstr(buf," colpirimanenti: 3 ") != NULL ) fputs(buf,b);


getchar();
fclose(a);fclose(b);
return 0;
}



il controllo funziona solo per colpirimanenti: 0
Per gli altri lo spazio dopo il valore non viene rilevato... nelle righe del tipo:

presenze:81***combinazione:14,15,30,38***rs: 248 ra: 88 colpirimanenti: 160
presenze:70***combinazione:14,15,30,39***rs: 222 ra: 222 colpirimanenti: 2
presenze:87***combinazione:14,15,30,40***rs: 183 ra: 180 colpirimanenti: 3

e quindi ad esempio la riga

presenze:87***combinazione:14,15,30,40***rs: 183 ra: 180 colpirimanenti: 3

non viene considerata...

Ho provato a mettere caratteri di spazio o tabulatura tipo: \n\t\s




while( fgets(buf,1024,a)) if(strstr(buf," colpirimanenti: 0") != NULL || strstr(buf," colpirimanenti: 1\n ") != NULL || strstr(buf," colpirimanenti: 2\n ") != NULL || strstr(buf," colpirimanenti: 3\n ") != NULL ) fputs(buf,b);



ma nulla...

se invece rimuovo lo spazio dopo il valore colpirimanenti cercato... il controllo avviene ma non ottimale... in quanto vengono considerati uguali... ad esempio... sia la riga

presenze:87***combinazione:14,15,30,40***rs: 183 ra: 180 colpirimanenti: 3 (ricercata)

che la riga...

presenze:74***combinazione:14,15,82,2***rs: 415 ra: 87 colpirimanenti: 328 (da non considerare)

in quanto il programma rileva in entrambi il valore 3... :dh: :zizi:

Grazie per il vostro eventuale aiuto

:ciauz:

Loading