Lese Eingabe von der Standardeingabe, bis eine leere Zeile
Möchte ich parse Eingabe wie:
1 2 3\n4 5 6\n7 8 9\n\n
und für jede Zeile speichern Sie jeden Wert in int ant drucken Sie auf die Standardausgabe, bis ich eine leere Zeile, also für dieses Beispiel, das ich bekommen würde:
1 2 3
1 2 3
4 5 6
4 5 6
7 8 9
7 8 9
Habe ich versucht, so etwas wie
int n1, n2, n3;
while(scanf ("%d %d %d\n", n1, n2, n3) != EOF) {
printf("%d %d %d\n", n1, n2, n3);
fflush(stdout);
}
aber es scheint nicht zu funktionieren. Gibt es irgendeine einfache Möglichkeit das zu tun?
InformationsquelleAutor aaaa | 2014-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
scanf
können nicht erreichen, was Sie versuchen zu tun, denn es hält die Lektüre, bis die Bedingung erfüllt ist, und%d
Planer ignorieren'\n'
newline-Zeichen, ich schlage vor, diesen codeWährend dieser code funktioniert, es ist nicht robust, da wird es scheitern, in dem Fall unten kommentiert von WhozCraig, so ist dies ein Weg, es zu tun, werden Sie sicher zu halten von dem problem
aus dem link, den du gepostet hast: "Der Wert EOF wird zurückgegeben, wenn das Ende der Eingabe erreicht ist, bevor entweder die erste erfolgreiche Umwandlung oder eine matching-Fehler Auftritt. "(In der return-Werte siehe).
Ich wollte nicht sehen
scanf
ich irgendwie sahsscanf
.Aber muss ich wirklich EOF oder einfach nur "\n"? Ich möchte aufhören zu Lesen, nachdem zwei "\n" in eine Zeile.
Beachten Sie, dass die OP den Fall betrachten
"\n \n"
vs"\n\n"
. Das erstere wird nicht auswerten(line[0] != '\n')
als wahr und so-fallen in den innerenif(scanf...
überprüfen (was aber nicht zu analysieren dreiint
).fgets()
nicht strip führende whitespace-Zeichen wie formatiertscanf
tut. Keine große Sache, es sei denn, man verlässt sich auf das zählen der Anzahl der Eingänge in die while-Körper als Linien-analysiert. Parsen von korrekten Daten ist trivial; seine falsche Daten, ist ein echter PITA zu behandeln.InformationsquelleAutor Iharob Al Asimi
Ich nicht wirklich wie einer der Antworten zur Verfügung gestellt, da Sie sich nicht darüber hinaus die Erfassung der Eingabe. Ich brauchte, um zu erfassen den gesamten Inhalt Lesen und verarbeiten Sie in Stapel. Also hier ist was ich kam mit:
Diese leidet unter dem gleichen
"\n \n"
problem diskutiert in einer früheren Antwort, aber war ausreichend für meine Bedürfnisse.InformationsquelleAutor Michael Ressler