Problem: Ich muss identifizieren können, wenn zwei Leerzeichen hintereinander auftreten.Wie lese ich Leerraum mit scanf in c?
Ich habe folgende Fragen lauten:
how to read a string from a \n delimited file
Und ich bin mir bewusst, scanf Probleme: http://c-faq.com/stdio/scanfprobs.html
Eingang in folgendem Format sein:
1 5 3 2 4 6 2 1 9 0
Zwei weiße Leerzeichen zeigen an, dass die nächste Datenmenge behandelt und mit sich selbst verglichen werden muss. Die Länge der Linie ist unbekannt und die Anzahl oder ganzen Zahlen in jeder Gruppe ist unbekannt. Zwei Whitespaces sind die Trennzeichen für den nächsten Datensatz.
Während ich fgets und verschiedene eingebaute Funktionen verwenden kann, um dieses Problem zu lösen, bin ich an dem Punkt, wo die Lösung des Problems mit scanf zu diesem Zeitpunkt wahrscheinlich einfacher sein wird. Wenn dies nicht der Fall ist, wird die meiste Arbeit mit fgets, strtok und atoi erledigt, aber ich muss immer noch zwei Leerzeichen in einer Zeile identifizieren.
Im Folgenden werden Ganzzahlen verwendet, bis ein Nicht-Integer eingegeben wird.
while (scanf ("%d", &x) == 1)
Was ich brauche es tun, ist auch zu lesen Whitespaces und wenn es zwei aufeinander folgende Leerzeichen Ich werde das Programm etwas anderes mit dem nächsten Satz von Daten zu tun.
Und wenn ich einen weißen Raum bekomme ich weiß nicht, wie zu sagen:
if ((input == "whitespace") && (previousInput == "whitespace")) ya da ya da else (input == "whitespace") ya da ya da else ya da ya da
ich Ihre Zeit zu schätzen und danken Ihnen für Ihre Hilfe.
Lektion gelernt: Während eine Lösung für scanf von Jonathan Leffler unten geschrieben wird, war die Lösung ein wenig einfacher mit getc (haft, die weniger intime Kenntnis der inneren scanf, reguläre Ausdrücke und Zeichen). Im Nachhinein würde eine bessere Kenntnis der regulären Ausdrücke, scanf und char das Problem leichter machen und natürlich wissen, welche Funktionen verfügbar sind und welche von Anfang an die beste wäre.
Das ist ein ziemlich grässliches Eingabeformat. Wenn Sie dafür verantwortlich sind, gestalten Sie es neu. Wenn Sie, wie ich vermute, eine Hausaufgabe bekommen haben, Pech - sie sind ein sadistischer Haufen, Ihre Lehrer. –
Beachten Sie, dass "weißer Raum" sich von "zwei Räumen" unterscheidet; "Leerraum" bedeutet üblicherweise eine Vielzahl von möglichen Zeichen, einschließlich Tabulator und Leerzeichen (oder Leerzeichen), und manchmal auch Form-Feed, vertikale Tabulatoren oder Zeilenumbrüche; und gelegentlich Backspace. –
@ Jonathan Leffler: zumindest versucht er nicht Whitespace zu analysieren (http://compsoc.dur.ac.uk/whitespace/) – ninjalj