【发布时间】:2015-07-06 10:52:34
【问题描述】:
这本来应该很简单,但我无法从键盘读取连续的输入。
代码如下:
#include <string.h>
#include <stdio.h>
int main()
{
char string[200];
char character;
printf ("write something: ");
scanf ("%s", string);
printf ("%s", string);
printf ("\nwrite a character: ");
scanf ("%c", &character);
printf ("\nCharacter %c Correspondent number: %d\n", character, character);
return 0;
}
发生了什么
当我输入一个字符串(例如:计算机)时,程序会读取换行符('\n')并将其放入character。下面是显示的样子:
write something: computer
computer
Character:
Correspondent number: 10
此外,该程序不适用于包含多个单词的字符串。 我怎样才能克服这些问题?
【问题讨论】:
-
scanf不安全,请改用fgets。 -
@John 在这个用例中,是的,但不是一般的!
-
@ElCid,当然! meta.stackoverflow.com/questions/252929/…
-
关于这一行:'scanf ("%s", string);'用户可能会溢出输入缓冲区,从而导致未定义的行为并导致段错误事件。建议:'scanf("%199s", string);'