#include<stdio.h>
int main()
{
int NC=0,k=0;
char mychar;
scanf("%d",&NC);
for(k=0;k < NC;k++)
{
printf("\nenter a character:-");
scanf("%c",&mychar);
printf("\n%c",mychar);
}
return 0;
}
第一个printf语句下面的语句正在for循环的替代迭代中执行。 即。 enter image description here
答案 0 :(得分:1)
当您在键盘上输入字符时,按一个字符键,然后按 ENTER 。输入流中有两个字符:您输入的字符和换行符。 scanf()
在输入流中留下\n
个字符。在循环的下一次迭代中,scanf()
会拾取此换行符。改为:
scanf(" %c",&mychar);
跳过领先的空白字符,包括换行符。
为了进一步扩展,scanf()
从输入流中读取字符。 %c
说明符与一个字符匹配,因此第二个字符\n
保留在输入流中。通过添加前导空格" %c"
,您告诉scanf()
首先匹配零个或多个空格字符(换行符是空白字符,\t
和\r
),然后匹配另一个字符,然后存储在mychar
中。这种方式即使从输入流中读取的下一个字符是换行符,也会跳过它。请注意,大多数转换说明符会自动跳过前导空格字符。那些不是:%c
,%[]
和%n
。