我有以下C程序:
#include <stdio.h>
int main()
{
char p[12], i;
for(i=0; i<12; i++)
{
scanf("%d", p+i);
}
for(i=0; i<12; i++)
{
printf("%d", *(p+i));
}
return 0;
}
此代码无限输入。这有什么不对吗?
答案 0 :(得分:0)
你搞砸了int
和char
(格式说明符%d
是整数,而不是字符)。有关不同类型的格式说明符的详细信息,请参阅here。
如果要从用户读取整数,则需要将代码更改为:
#include <stdio.h>
int main()
{
int p[12], i;
for(i=0; i<12; i++)
{
scanf("%d", &p[i]);
}
for(i=0; i<12; i++)
{
printf("%d", *(p+i)); // or better to use p[i] here
}
return 0;
}
答案 1 :(得分:0)
计数器 i 在您的代码中被声明为字符。执行for循环时,这将导致逻辑错误。
因此,如下所示,对变量i
进行判定,
int i;
同时将格式说明符更改为%c
以正确处理输入。