【发布时间】:2013-04-06 15:42:47
【问题描述】:
我有这个代码:
#include <stdio.h>
int main()
{
char vc[5]={1,1,1,1,0};
int vi[4]={0,0,0,0};
printf("Reading characters...\n");
for(int i = 0 ; i < 4 ; i++)
scanf("%c",&vc[i]);
printf("Reading numbers...\n");
for(int i = 0 ; i < 4 ; i++)
scanf("%d",&vi[i]);
for(int i = 0 ; i < 4 ; i++)
printf("%c ",vc[i]);
printf("\n");
for(int i = 0 ; i < 4 ; i++)
printf("%d ",vi[i]);
printf("\n");
return 0;
}
在打印“阅读数字”并进入下一个 for 循环之前,我只能输入 2 个字符。为什么迭代只持续 2 步?应该是 4。
【问题讨论】:
-
您在输入字符之间键入 ENTER。这会生成一个换行符。您要求
scanf读取字符,而换行符是一个字符(特别是'\n')。 -
这解释了很多。谢谢!