Wie lese ich weiße Raum wird mit scanf in c?

Problem: ich muss in der Lage sein, zu erkennen, Wann zwei Leerzeichen nacheinander stattfinden.

Las ich die folgenden Fragen:

wie liest man einen string aus einer \n getrennte Datei

wie liest scanf mit Leerzeichen

Und ich bin mir bewusst scanf Probleme: http://c-faq.com/stdio/scanfprobs.html

Eingabe im folgenden format:

1 5 3 2  4 6 2  1 9  0

Zwei Leerzeichen zeigt an, dass der nächste Satz von Daten zu handhaben und im Vergleich zu sich selbst. Die Länge der Linie ist unbekannt, und die Zahl oder ganze zahlen in den einzelnen Gruppen ist unbekannt. Zwei Leerstellen ist, die die meisten, die separate Nächster Datensatz".

Während ich verwenden kann, fgets und verschiedenen eingebauten Funktionen, um dieses problem zu lösen, bin ich an dem Punkt, wo die Lösung das problem mit scanf an diesem Punkt wird wahrscheinlich einfacher sein. Allerdings, wenn das nicht der Fall ist, mit fgets strtok-und atoi wird die meisten den job, aber ich muss immer noch identifizieren Sie zwei Leerzeichen in einer Reihe.

Den unter nehmen ganze zahlen, bis ein nicht-integer eingegeben.

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

Was ich brauche, es zu tun ist, Lesen Sie Leerzeichen als gut und wenn es zwei aufeinander folgende whitespaces ich werde das Programm etwas anderes zu tun und mit dem nächsten Datensatz.

Und einmal bekomme ich einen weißen Raum, ich weiß nicht, wie zu sagen:

if ((input == "Leerzeichen") && (previousInput == "Leerzeichen")) 
ya ya da da 
else (Eingabe == "Leerzeichen") 
ya ya da da 
sonst 
ya ya da da 

Ich Schätze Ihre Zeit und ich danke Ihnen für Ihre Hilfe.

Lektion gelernt:
Während eine Lösung für scanf ist unten geschrieben von Jonathan Leffler, der Lösung ein bisschen einfacher war mit getc (durch die Art und Weise, die eine weniger intime Kenntnis der inneren scanf, reguläre Ausdrücke und char). Im Nachhinein eine bessere Kenntnis von regulären Ausdrücken, scanf und char wäre das problem einfacher und natürlich zu wissen, welche Funktionen verfügbar sind und die man hätte am besten ein Einsatz von Beginn an.

  • Das ist ein ziemlich grauenvoll-input-format. Wenn Sie in der Verantwortung, Umgestaltung. Wenn, wie ich vermute, Ihr habt eine Hausaufgabe, Pech - Sie sind ein sadistisches paar, Ihre Lehrer.
  • Beachten Sie, dass 'white-space' unterscheidet sich von 'zwei Leerzeichen'; 'white space', konventionell bedeutet, dass eine Vielzahl von Zeichen, einschließlich tab und leer (oder-Raum) und manchmal (form feed), vertikaler Tabulator oder newline; und gelegentlich die backspace auch.
  • Leffler: zumindest hat er nicht versucht, Sie zu analysieren Whitespace-Zeichen ( compsoc.dur.ac.uk/whitespace )
  • Interessant! Du bist wahrscheinlich wissen, Stroustrup ' s - Angebot in diesem Bereich! Zumindest diese Frage ist nur C, nicht C++ zu.
InformationsquelleAutor MykC | 2010-09-21
Schreibe einen Kommentar