如何在执行期间允许读取空格?

时间:2016-06-18 15:21:14

标签: c string string-comparison

程序是比较字符串,但是当我执行它时,间距有问题。当我输入带间距的第一个字符串时,程序只是跳转到比较字符串,不允许我输入第二个字符串,如下所示:

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

screenshot

这是我的代码:

#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;
}

2 个答案:

答案 0 :(得分:1)

我认为您可以使用此功能stdlib.h来执行此操作:

gets(input1);
gets(input2);

当然,POSIX方式可行,您可以使用read从stdin获取行:

read(STDIN_FILENO, input1, 50)

答案 1 :(得分:1)

添加空格:

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

它将消耗先前输入中遇到的所有空白区域。

输入任何输入时,您还可以输入一个换行符号(空白区域)。并且您的代码中的第二个scanf正在读取该换行符。

问题:

  

如何在执行期间允许读取空格? (问题

您已使用[^\n]中的scanf("%[^\n]s",input1);进行此操作,这意味着在遇到新行(\n)之前读取输入。此外,并非\n本身也不会以这种方式阅读。

<强>输出:

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