【发布时间】:2021-11-17 05:08:06
【问题描述】:
我正在尝试使用空格接收用户输入并将其存储在字符数组中。 之后,我想接受一个字符值并将其存储为一个字符。 但是,当我运行我的代码时,字符的提示会被忽略,而是填充一个空格。我怎样才能接受一个字符数组并且仍然允许在之后提示单个字符?
void main()
{
char userIn[30];
char findChar;
printf("Please enter a string: ");
scanf("%[^\n]s", userIn);
printf("Please enter a character to search for: ");
scanf("%c", &findChar);
//this was put here to see why my single char wasnt working in a function I had
printf("%c", findChar);
}
【问题讨论】:
-
“scanf 的问题”实际上是不言而喻:sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html
-
是这样吗?我几乎不会从 java 进入 C,所以这对我来说是一个新现象。
-
提醒
scanf确实会返回有价值的结果,以帮助指示成功扫描的项目数。您可以通过实际检查该结果来缓解其中一些问题。 -
TLDR 来自建议的副本:在
scanf中的%c格式之前添加一个空格以跳过缓冲区中剩余的换行符。
标签: c scanf user-input