2016-06-18 5 views
2

Das Programm soll die Zeichenfolge vergleichen, aber es gibt ein Problem mit dem Abstand, wenn ich es ausführe. Als I-Eingang mit Abstand die erste Saite, springt das Programm nur die Saiten zu vergleichen, so dass ich nicht zur Eingabe der zweite Zeichenfolge wie folgt:Wie kann ich zulassen, dass Leerzeichen während der Ausführung gelesen werden?

>>"Enter first string": 
"Hello Hey" 
">>Enter second string:" 
">>First string is more than the second string." 

screenshot

Hier ist mein Code:

#include<stdio.h> 
#include<string.h> 

int main (void) { 

    int result; //store results 
    char input1[50]; 
    char input2[50]; 

    printf("Enter first string:\n"); 
    scanf("%[^\n]s",input1); 

    printf("Enter second string:\n"); 
    scanf("%[^\n]s",input2); 

    result = strcmp(input1, input2); 

    if (result==0) 
     printf("First string is equal to second string\n"); 

    if (result>0) 
     printf("First string is greater than second string\n"); 

    if (result<0) 
     printf("First string is less than the second string\n"); 

    return 0; 
} 
+0

' "% [^ \ n] s"' -> ' "% 49 [^ \ n] *% c"' – BLUEPIXY

+0

Veröffentlichen Sie keine Bilder von Text ! Es war wirklich einfacher, ein Bild zu posten, als den Text direkt zu kopieren/einfügen? – Olaf

+0

@BLUEPIXYs Antwort war eine große Hilfe. Das Programm funktioniert jetzt! Vielen Dank! Danke Ihnen allen für die Beantwortung meiner Frage. Es hat wirklich geholfen. –

Antwort

1

ich glaube, Sie es mit dem stdlib.h mit dieser Funktion tun können:

gets(input1); 
gets(input2); 

Sicher, die POSIX Art und Weise funktioniert, können Sie lesen, verwenden Sie die Zeile von stdin zu bekommen:

read(STDIN_FILENO, input1, 50) 
+4

Vermeiden Sie 'gets', es ist entzogen und gefährlich, da es keine Möglichkeit gibt zu sagen, wie lange die Zeichenfolgeneingabe zu akzeptieren ist. –

+1

Auch "gets" ist nicht in "stdlib.h". – melpomene

+0

Oh, ich wusste es nicht, danke! Persönlich würde ich 'lesen' verwenden – Omar

1

hinzufügen Plätze:

scanf(" %[^\n]s",input1); 
scanf(" %[^\n]s",input2); 

Es wird verbrauchen alle weißen Räume in vorherigen Eingaben angetroffen .

Wenn Sie eine Eingabe eingeben, geben Sie mit Ihrer Eingabe auch ein neues Zeilenzeichen (Leerzeichen) ein. Und dieses Newline-Zeichen wird in Ihrem Code von scanf gelesen.

Die Frage:

Wie ermögliche ich Räume während der Ausführung gelesen werden? (die Frage)

Sie bereits tun es [^\n] in scanf("%[^\n]s",input1); mit, was bedeutet, die Eingabe zu lesen, bis eine neue Zeile (\n) angetroffen wird. Auch nicht, dass \n selbst nicht auf diese Weise gelesen wird.

Ausgang:

Enter first string: 
Strings in C 
Enter second string: 
Strings in C 
First string is equal to second string 
Verwandte Themen