[英]Reading whitespace when asking user input C
我在尝试读取C中的空白字符时遇到问题。我想做的是在询问名字和姓氏时读取用户输入。
因此,例如,我提示用户输入他们的姓名,他们输入类似“ Peter Smith”的字样。 有了这些信息,我想将其写入文件。
将其写入文件时,该文件仅读取姓氏“ Smith”。 如何读取整个字符串?
我是这样问的:
printf("\nPlease enter your first and last name: \n");
scanf("%[^\n]", name);
fgets(name, sizeof(name), stdin);
我认为您的问题不在于您发布的摘录中。 这是我在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
如果您发布用于将名称写入文件的代码,则可能会显示错误的来源。
该代码正常工作。 fgets
调用替换您为名字读取的值。
您应该坚持一种输入方案。 当您在输入范例之间切换时,会发生“奇怪”的事情。 (从技术上讲,这正是应该发生的情况,但是典型的用户往往对每个函数的工作方式以及输入流所处的状态不太精确。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.