在询问用户输入C时读取空格

时间:2014-06-23 05:08:46

标签: c user-input

我在尝试读取C中的空格字符时遇到问题。我想要的是在询问姓名时读取用户输入。

因此,例如,我提示用户输入他们的名字,他们输入的内容类似于"彼得史密斯"。有了这些信息,我想把它写到一个文件。

当它将文件写入文件时,该文件只读取姓氏" Smith"。我怎样才能阅读整个字符串?

以下是我的提问:

printf("\nPlease enter your first and last name:  \n");
scanf("%[^\n]", name);
fgets(name, sizeof(name), stdin);

2 个答案:

答案 0 :(得分:2)

我不认为您的问题出在您发布的代码段中。这是我在Linux系统上编写的一个示例程序,用于尝试查明问题:

#include <stdio.h>

int main()
{
    char name[128];
    int  num_scans = 0;
    FILE *out = fopen("name.txt", "w");

    if(out == NULL)
    {
        printf("Failed to open file for write.\n");
        return 1;
    }   

    printf("\nPlease enter your first and last name:  \n");
    num_scans = scanf("%127[^\n]", name);

    if(num_scans < 1)
    {
        printf("Error reading name.\n");
        return 2;
    }

    fprintf(out, "%s\n", name);

    fclose(out);

    return 0;
}

这似乎对我有用:

$cat name.txt
Peter Smith

如果您发布用于将名称写入文件的代码,则可能会显示错误的来源。

答案 1 :(得分:2)

代码正常运行。 fgets调用会替换您为名字读取的值。

你应该坚持一种输入方案。当您在输入范例之间切换&#34;奇怪&#34;事情发生。 (从技术上讲,它们应该是应该发生的,但是典型的用户往往不太确切地知道每个函数的确切工作方式,以及输入流的状态。)