2016-05-01 11 views
-2

Eingabezeichenfolge in c zu nehmen, können wir für 2 Möglichkeiten (nach meinem Wissen fügen Sie bitte mehr, wenn ich etwas fehlt) entscheidenin c Nehmen Sie String-Eingang

char name[10]; 
scanf(" %s",name); // First case 
scanf("%[\n]s",name); // Second case 

1. man die Saite betrachten wird bis die erste leere Raum und 2. nehmen vollständigen Satz, bis die neue Zeilenumbruch als String aber Eingang nehmen wir die zweite Aussage als

scanf(" %[\n]s",name); 

meine Frage zu improvisieren müssen, ist, welche zusätzlichen Abstand hier gerade? weil mein Compiler sich manchmal normal verhält, auch wenn ich das 's' aus der scanf-Anweisung entferne und ohne zusätzlichen Abstand vor '%', aber irgendwann wird es nicht funktionieren.

+1

Warum stellen Leute Fragen, die einfach durch Lesen der Dokumentation beantwortet werden können? – Barmar

+2

@ nishant-kumar: Ich frage mich, ob das 's' am Ende von'% [\ n] s' einen Unterschied macht. – sjsam

+0

http://stackoverflow.com/questions/17079144/why-we-need-to-put-space-before-c Lesen Sie die Antwort – keras

Antwort

1

Der Platz vor dem Operator % wird es so machen, dass jeder Leerraum vor der eingegebenen Zeichenfolge entfernt wird, sowie was auch immer die Formatbezeichner nach dem Operator % am Eingang haben.

Beispiel: "\ n \ t Hallo Welt" eingegeben mit " %[^\n]" wird als "Hello World" aufgezeichnet.

+2

Nicht einverstanden mit "Der Abstand tut nichts ...". Der Raum im Format 'scanf ("% [\ n] s ", Name);' hat eine wichtige Auswirkung: konsumieren führenden Leerraum. – chux

+0

@chux Whitespace entfernen oder erstellen? –

+0

"Entfernen oder erstellen Sie Leerzeichen?" ist unklar, da 'scanf()' keinen Leerraum erzeugt. Vielleicht die Frage neu formulieren. – chux

0

Wenn Leerzeichen im ersten Eingabestream verbleiben und falsch durch nächsten Eingang gelesen werden scanf: Um das Leerzeichen aus dem Eingabestream zu löschen, verwenden Sie entweder Leerzeichen vor Formatzeichenfolge oder verwenden Sie die Funktion fflush (stdin).

Verwandte Themen