Aus der Manpage:
Alle Konvertierungen von den% (Prozentzeichen) eingeführt Charakter
Eine Umwandlung ist, wie wir bestimmten Text-Strings entsprechen. Ein %s
entspricht beispielsweise einem String, und %d
entspricht einer dezimalen Ganzzahl. So bei der Zeichenfolge suchen, haben wir eine "%[
Umwandlung, die auf der Manpage nach:
[Spiele eine nicht leere Folge von Zeichen aus der angegebenen Liste der zulässigen Zeichen; ... die Menge wird durch die Zeichen zwischen dem offenen Klammerzeichen [Zeichen und einer geschlossenen Klammer] definiert.
Diese Konvertierung wird also eine Liste von Zeichen definieren, die angepasst und in Ihre Zeichenfolge eingelesen werden. Wichtig ist:
Die Menge schließt diese Zeichen aus, wenn das erste Zeichen nach der offenen Klammer ein Zirkumflex^ist.
Und wenn man sich die Zeichenfolge aussehen "%[^\n]%*c"
Sie %[^\n]
haben, was bedeutet, dass Sie alle Zeichen sind passend, bis ein Zeilenende-Marke getroffen.
Als nächstes haben Sie eine %*
der Stern ist eine Umwandlung, die ignoriert was passt danach.Von der Manpage:
Unterdrückt die Zuweisung. Die folgende Konvertierung erfolgt wie üblich, aber es wird kein Zeiger verwendet. Das Ergebnis der Konvertierung wird einfach verworfen.
Also, wenn Sie in Ihrem letzten Spiel aussehen, haben Sie eine c
, bekam
c Findet eine Folge von Breite count Zeichen (default 1);
so bedeutet das, dass Sie %*c
1 Zeichen zu gehen, und entsorgen Sie sie dann (das Zeichen angepasst wird, ist das Newline - was die %[^\n]
nicht verbrauchen, weil Sie alles abgestimmt bis zu die Newline), wird es nicht in Ihrer string
Variable gespeichert.
Das Lesen der Manpage ist dein Freund. Ich hoffe das hilft.
Haben Sie versucht, die Manpage zu lesen? Wenn Sie auf einem Unix-System sind, geben Sie 'man scanf' ein und lesen Sie es durch. – EdgeCaseBerg
Insbesondere weist das abschließende '% * c' an, den abschließenden' newline' als 'char' zu lesen und das Ergebnis zu verwerfen, um die' newline' im Eingabepuffer nicht zu belassen. –
Hier ist eine gute Referenz von Regex: http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean –