为什么Scanf在拍摄角色时工作很奇怪

程序说明: – 我编写了一个程序,它从用户输入无限的字符输入。 时间并打印输入的输入。这是程序

#include int main() { int i=1; char a; while (i!=0) { printf("Enter %d th value\n",i); scanf("%c",&a); printf("Entered input is %c\n",a); i++; } } 

上述方案的产出: –

 Enter 1 th value q Entered input is q Enter 2 th value Entered input is Enter 3 th value r Entered input is r Enter 4 th value Entered input is Enter 5 th value g Entered input is g Enter 6 th value Entered input is Enter 7 th value 

正如您所看到的,该程序正在跳过偶数编号的循环,它仅适用于奇数个“i”值。

我做了什么:-

我整天都在互联网上搜索,最后我发现我们必须在scanf中的%c之前插入空格。这是更新后的程序。

  #include int main() { int i=1; char a; while (i!=0) { printf("Enter %d th value\n",i); scanf(" %c",&a); //changed lineeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee printf("Entered input is %c\n",a); i++; } } 

我没有区别,但我在scanf中的%c之前添加了空格。现在它工作正常。这是输出: –

 Enter 1 th value q Entered input is q Enter 2 th value w Entered input is w Enter 3 th value e Entered input is e Enter 4 th value r Entered input is r Enter 5 th value 

我的问题: –究竟发生了什么? 我非常渴望了解这个问题。有些人可以详细解释我。我浏览了互联网,但我没有找到任何关于这类问题的解释!

你在缓冲区中留下一行换行符,输入一个字符。 在每隔一次迭代中,scanf读取该换行符。

" %c"之前的空格将消耗包括换行符在内的空格。 如果有的话。