C 无限获取输入的指针

C 无限获取输入的指针,c,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; } 这段代码无限地接受输入。这有什么问题?您弄乱了int和ch

我有以下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;
}
这段代码无限地接受输入。这有什么问题?

您弄乱了int和char格式说明符%d是整数,而不是字符。有关不同类型的格式说明符的更多信息,请参阅

如果要从用户处读取整数,则需要将代码更改为:

#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;
}
计数器i在代码中声明为字符。这将导致执行for循环时出现逻辑错误

将变量i十次分解如下:

int i;

还要将格式说明符更改为%c以正确处理输入。

真的吗???这里很好用。但编译器警告:格式%d要求参数的类型为int*,但参数2的类型为char*。它在我的编译器中工作正常。你在使用哪个编译器?我在使用代码块。你是如何提供输入的?通过无限地获取输入,您的意思是它只是坐在那里等待您输入数据吗?如果将stdin连接到tty%d和char[],则这将是预期的行为???要读取整数还是字符?