Um es mit dem C11
Standard, Kapitel §7.21.6.2, fscanf()
[ ...] Eac h Umrechnungsspezifikation wird durch das Zeichen %
eingeführt. Nach dem% erscheint in der Reihenfolge Folgendes:
- Ein optionales Zeichen zur Unterdrückung der Zuweisung *
.
- [...]
- A Konvertierungsspezifizierer Charakter
und das Verhalten in Bezug auf,
[..] Es sei denn, wurde durch eine *
angegeben Zuordnung Unterdrückung, die Ergebnis der Konvertierung wird in das Objekt platziert, auf das das erste Argument nach das Format-Argument zeigt, das noch kein Konvertierungsergebnis erhalten hat. [...]
Das heißt, im Fall eines Formatbezeichner wie "%*c"
, ein char
wird aus den stdin
gelesen, aber der gescannte Wert wird auf nichts gespeichert oder zugewiesen bekommen. Sie müssen also keinen entsprechenden Parameter angeben.
Also, in diesem Fall
scanf("%d%*c", &word_count);
ist eine absolut gültige Aussage.
Zum Beispiel, was es tut, in einer * nix-Umgebung ist den Eingangspuffer von den newline
zu löschen, die durch Drücken ENTER Taste nach der Eingabe gespeichert wird.
Siehe: [Der Unterschied zwischen% * c% c und% c] (http://stackoverflow.com/questions/11109750/the-difference-between-cc-and-c) –
[** fscanf-Dokumentation * *] (http://en.cppreference.com/w/c/io/fscanf). – edmz