2016-03-22 5 views
1

Ich lese in einer Textdatei und verwende ein Komma als Trennzeichen, die Zeile unten funktioniert jedoch, wenn ich lname ausdrucke ignoriert es nicht den Leerraum hinter dem Komma und druckt ein Leerzeichen vor dem Namen. Wie kann ich den Code anpassen, um Leerraum zu ignorieren?C - sscanf Weißraum nicht ignorieren

Beispiel Text:

Rob, Smith, 4, 12, EINTEXT
Steve Jones, 41, 286, sometext

sscanf(line, "%[^,],%[^,],%d,%d,%s", fname,lname,&num1,&num2,info); 
+0

Danke das hat funktioniert! – BinaryX

+0

Beachten Sie, dass 'sscanf (", ",",% [^,], ", fname);' den Scanvorgang stoppt und nichts in 'fname' speichert. IOWs, Namen müssen etwas Nicht-Leerraum enthalten. – chux

Antwort

6

einfach ein Leerzeichen hinzufügen, wenn Sie Leerzeichen ignoriert werden sollen :

sscanf(line, " %[^,], %[^,], %d, %d, %s", fname, lname, &num1, &num2, info); 

Der Raum vor %d und %s sind nicht erforderlich, da sie bereits Blei überspringen Whitespace-Zeichen. Die einzigen Formatspezifizierer, die führende Whitespaces nicht überspringen, sind %c, %[ und %n.

Beachten Sie, dass ein Leerzeichen in der Formatzeichenkette *scanfscanf anweist, eine beliebige Anzahl von Leerzeichen, einschließlich keine, bis zum ersten Leerzeichen zu scannen.

+0

Hey Cool Guy, ich möchte all diese Dinge lernen, und ich bin nicht in der Lage, eine gute Quelle zu finden, können Sie mir eine gute Quelle über all dies zeigen? –