指针无限输入

时间:2014-02-14 03:34:19

标签: c

我有以下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;
}

此代码无限输入。这有什么不对吗?

2 个答案:

答案 0 :(得分:0)

你搞砸了intchar(格式说明符%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以正确处理输入。