为什么我不能更改代码中的行顺序?

时间:2019-07-01 18:03:10

标签: c

所以我只是在C语言中尝试一些事情,我注意到,如果我有关于先获取名称的代码,然后再输入该字符,程序将不允许我在该字符中编写代码,这将直接转到最后一行,打印出我写的内容。为什么我不能先要求字符,然后要求名称,并打印出用户写的内容?

char name[50];
char character;
printf("enter the character \n");
scanf("%c", &character);
printf("enter the name \n");
scanf("%s", name);

printf("you wrote: %c and %s ", character, name);

return 0;

2 个答案:

答案 0 :(得分:1)

因为当您按下 ENTER 按钮时,scanf()函数会将其扫描为字符。 试试

 scanf("\n%c");

答案 1 :(得分:0)

好的,所以问题在于,当您首先输入字符串的scanf时,在获取字符串的输入后缓冲区没有被清除。因此,发生的情况是第二个scanf的输入被第一个scanf的缓冲区填充。

要清除缓冲区,只需在第一次scanf调用之后调用getchar()即可,

以上答案是解决此问题的另一种方法。

有关此的更多信息。 https://www.geeksforgeeks.org/clearing-the-input-buffer-in-cc/