PDA

Visualizza la versione completa : [C] Uso di scanf() in un ciclo while()


Rhode
28-02-2007, 00:50
ciao! di recente mi sono imbattuta nella seguente scrittura:

while(scanf("%d", &valore)==1 && valore != 0)
{

}

qualcuno mi potrebbe spiegare il significato di quel ==1 dopo la scanf?
Grazie :)

Ol3iconfini
28-02-2007, 02:35
Se il valore immesso è 1 entra nel while...

Ruben Elmo
28-02-2007, 03:26
Originariamente inviato da Rhode
ciao! di recente mi sono imbattuta nella seguente scrittura:

while(scanf("%d", &valore)==1 && valore != 0)
{

}

qualcuno mi potrebbe spiegare il significato di quel ==1 dopo la scanf?
Grazie :)

Finchè il valore inserito da tastiera è uguale a 1 e diverso da 0 entra nel while ed esegue le istruzioni... Di solito usano questo ciclo per creare programmi che entrano in ripetizione e girano finchè non si preme un tasto di uscita (in questo caso lo 0).

:zizi:

oregon
28-02-2007, 08:22
No ... se non si ricordano, basterebbe dare un'occhiata alle specifiche della scanf in qualsiasi guida (online o cartacea) ...

"Return Value: on success, the function returns the number of items succesfully read. This count can match the expected number of readings or fewer, even zero, if a matching failure happens."

Quindi, la scanf in questione restituisce 1 per indicare che e' stato letta con successo 1 variabile e NON che il valore della variabile e' 1.

Se la scanf restituisce 0, allora la variabile non e' stata regolarmente accettata, magari perche' sono stati forniti dei caratteri alfabetici e non numerici.

Rhode
28-02-2007, 23:46
ok ora è chiaro :yuppi: grazie mille!

Loading