Wie lese ich Leerzeichen mit scanf in c?

Problem: Ich muss in der Lage sein zu identifizieren, wann zwei Leerzeichen nacheinander auftreten.

Ich habe die folgenden Fragen gelesen:

wie man eine Zeichenkette aus einer durch \ n Trennzeichen getrennten Datei liest

wie man scanf mit Leerzeichen liest

Und mir sind Scanf-Probleme bekannt:http: //c-faq.com/stdio/scanfprobs.htm

Input hat das folgende Format:

1 5 3 2  4 6 2  1 9  0

Zwei Leerzeichen zeigen an, dass der nächste Datensatz verarbeitet und mit sich selbst verglichen werden muss. Die Länge der Zeile ist unbekannt und die Anzahl oder die ganzen Zahlen in jeder Gruppe sind unbekannt. Zwei Leerzeichen sind die meisten, die den nächsten Datensatz trennen.

Während ich fgets und verschiedene eingebaute Funktionen verwenden kann, um dieses Problem zu lösen, bin ich an dem Punkt angelangt, an dem es wahrscheinlich einfacher sein wird, das Problem mit scanf zu lösen. Wenn dies jedoch nicht der Fall ist, erledigen fgets, strtok und atoi den größten Teil der Arbeit, aber ich muss immer noch zwei Leerzeichen hintereinander identifizieren.

Der folgende Befehl benötigt ganze Zahlen, bis eine nicht ganze Zahl eingegeben wird.

while ( scanf ( "%d", &x ) == 1 )

Was ich tun muss, ist, auch Leerzeichen zu lesen, und wenn es zwei aufeinanderfolgende Leerzeichen gibt, werde ich das Programm veranlassen, mit dem nächsten Datensatz etwas anderes zu machen.

Und wenn ich einen Leerraum bekomme, weiß ich nicht, wie ich das sagen soll:

if ((input == "whitespace") && (previousInput == "whitespace"))
  ya da ya da
else (input == "whitespace")
  ya da ya da
else 
  ya da ya da

Ich schätze Ihre Zeit und danke für Ihre Hilfe.

Lektion gelernt Während eine Lösung für scanf von Jonathan Leffler weiter unten veröffentlicht wird, war die Lösung mit getc etwas einfacher (da weniger genaue Kenntnisse über den inneren scanf, reguläre Ausdrücke und char erforderlich sind). Rückblickend würde eine bessere Kenntnis der regulären Ausdrücke durch scanf und char das Problem leichter machen und natürlich wissen, welche Funktionen verfügbar sind und welche von Anfang an am besten geeignet gewesen wären.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage