2009-04-23 14 views
0

Um newline zu unterdrücken, verwenden wir% [^ \ n]. Können Sie vorschlagen, was das Format sein soll, um in der Eingabe leer zu überspringen, d. H. Wenn wir "hallo stackflow" eingeben müssen. Ich kenne Fgets und bekomme, aber ich will sie nicht benutzen, sie schaffen Probleme.Unterdrücken von Leerzeichen in Eingabe durch scanf

+1

Sie müssen klarer sein. Welche Art von Problemen verursachen sie? Wenn Sie eine nicht blockierende Eingabe wünschen, sagen Sie es. – unwind

+0

Bitte, groß schreiben !!! – Tom

+0

fgets wartet auf ever.even nach neuer Zeile ist es nicht receiving die Zeile.Ich weiß, dass es liest alles bis eof oder newline .am mit dies in einem Chat-Programm in Client-Server.Auf der Serverseite ist es recit wie erwartet beendet aber auf der Client-Seite wurde es blockiert. – mawia

Antwort

0

Geben Sie ein Leerzeichen in das Format scanf; das unterdrückt Leerzeichen.

1

Ich denke, du meinst "include whitespace". Verwenden Sie:

#define str(x) #x 
#define xstr(x) str(x) 
/* ... */ 
char buf[ SIZE + 1 ] = ""; 
int rc = scanf("%" xstr(SIZE) "[^\n]%*[^\n]", buf); 
/*you may need the return value later on, if reading 
    in multiple strings with whitespaces in a loop */ 
if (!feof(stdin)) 
    getchar(); /* consume newline */ 
Verwandte Themen