per citare il C11
standard capitolo §7.21.6.2, fscanf()
[ ...] Eac La specifica di conversione h è introdotta dal carattere %
. Dopo la%, appare in sequenza:
- Un carattere di soppressione di assegnazione opzionale *
.
- [...]
- Un identificatore conversione carattere
e per quanto riguarda il comportamento,
[..] A meno che la soppressione incarico è stato indicato da un *
, il risultato della conversione viene inserito nell'oggetto puntato dal primo argomento che segue l'argomento di formato che non ha ancora ricevuto un risultato di conversione. [...]
Ciò significa, in caso di un identificatore di formato come "%*c"
, un char
sarà letto dal stdin
ma il valore digitalizzata non vengono memorizzati o assegnato a nulla. Quindi, non è necessario fornire un parametro corrispondente.
Quindi, in questo caso,
scanf("%d%*c", &word_count);
è un perfettamente valida dichiarazione .
Ad esempio, cosa fa in un ambiente * nix è per cancellare il buffer di ingresso dal newline
che è memorizzato causa premendo ENTER chiave dopo l'ingresso.
fonte
2016-01-19 10:35:25
Vedere: [La differenza tra% * c% c e% c] (http://stackoverflow.com/questions/11109750/the-difference-between-cc-and-c) –
[** documentazione fscanf * *] (http://en.cppreference.com/w/c/io/fscanf). – edmz