所以我只是在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;
答案 0 :(得分:1)
因为当您按下 ENTER 按钮时,scanf()
函数会将其扫描为字符。
试试
scanf("\n%c");
答案 1 :(得分:0)
好的,所以问题在于,当您首先输入字符串的scanf时,在获取字符串的输入后缓冲区没有被清除。因此,发生的情况是第二个scanf的输入被第一个scanf的缓冲区填充。
要清除缓冲区,只需在第一次scanf调用之后调用getchar()即可,
以上答案是解决此问题的另一种方法。
有关此的更多信息。 https://www.geeksforgeeks.org/clearing-the-input-buffer-in-cc/