[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.