[C]strcmp
Ho scritto questo codice ma quando leggo da file il carattere > e il confronto tra la variabile c e ">" mi restituisce sempre 1 e quindi me lo stampa sempre.
Non capisco perchè.
Non capisco perchè.
while(c!='>' && !feof(f)) { fscanf(f,"%c",&c); if(strcmp(&c,">")!=0) fprintf(chr[ind],"%c",c); }
Risposte
risolto cambiando istruzione
'>' e ">" sono due cose diverse in C. La prima è un singolo carattere che contiene il codice corrispondente al carattere '>'. ">" è un array di char di lunghezza 2 che contiene i valori '>' e '\0'. strcmp serve per confrontare stringhe e quindi termina il confronto quando incontra il carattere '\0' in una delle due stringhe. Siccome è abbastanza improbabile che il byte successivo a quello che contiene il valore della variabile c sia '\0' allora le due stringhe vengono sempre viste come diverse. Per controntare due char si usa semplicemente l'operatore ==. Lo stesso discorso vale anche per le altre funzione che operano sulle stringhe.