我在尝试读取C中的空格字符时遇到问题。我想要的是在询问姓名时读取用户输入。
因此,例如,我提示用户输入他们的名字,他们输入的内容类似于"彼得史密斯"。有了这些信息,我想把它写到一个文件。
当它将文件写入文件时,该文件只读取姓氏" Smith"。我怎样才能阅读整个字符串?
以下是我的提问:
printf("\nPlease enter your first and last name: \n");
scanf("%[^\n]", name);
fgets(name, sizeof(name), stdin);
答案 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;事情发生。 (从技术上讲,它们应该是应该发生的,但是典型的用户往往不太确切地知道每个函数的确切工作方式,以及输入流的状态。)