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;
}

这段代码无限地接受输入。这有什么问题吗?

最佳答案

您搞乱了 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;
}

关于c - 指针无限地接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21770354/

相关文章:

c - 为什么整数隐式转换为指针?

c - 如何调用一个返回标志并在内部将该标志重置为 false 的函数?

c - 如何将结构体数组传递给函数?

c - 从 C 中的文件描述符读取

c++ - 用于 C++ 的嵌入式调试器

c++ - 如何在不破坏连接的情况下发送和接收 SO_SNDTIMEO 和 SO_RCVTIMEO 的数据?

c - 预期为 ‘char **’ 但参数的类型为 ‘char *’ --argv

C: 使用 strcpy 将字符串分配给结构数组导致的段错误

c++ - 包含其他 header 的单个 header

c - 为什么在 c 中使用堆内存时会出现运行时错误?