PDA

View Full Version : confronto char in C


marco.gheza
22-07-2007, 09:32
Ciao a tutti!
sto programmando in C e sono bloccato da ore su un problema apparentemente stupido: il confronto tra char. In particolare, leggo un char da un file testo e voglio confrontarlo con un carattere in un ciclo: del tipo, cicla finchè il carattere letto non è uguale a 'L'.

char ch;
while((ch=fgetc(nome_file) != 'L')
{
........(corpo ciclo).........
}

il ciclo non va e cicla all'infinito.............

suggerimenti sulla sintassi??

Ah, uso Eclipse per sviluppare il programma!

andbin
22-07-2007, 09:44
il ciclo non va e cicla all'infinito.............Innanzitutto fgetc ritorna un int, non un char. Il motivo è semplice: per indicare la condizione di end-of-file, ritorna il valore EOF, che è una costante che vale -1. Anche con un char è possibile avere -1, visto che il char è segnato. Ma il valore 0xff (-1 appunto) tecnicamente può essere un carattere valido.

Quindi:

int c;
while ((c = fgetc (f)) != EOF && c != 'L')
{
....
}

Così esce dal ciclo solo quando si ha EOF o quando il carattere letto è 'L'.