[C]strcmp

marx1
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è.

while(c!='>' && !feof(f))
    {
            fscanf(f,"%c",&c);
            if(strcmp(&c,">")!=0)
            fprintf(chr[ind],"%c",c);
    }

Risposte
marx1
risolto cambiando istruzione

apatriarca
'>' 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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.