很简单的问题。为什么第一个字母被截断?打印下降的“丑角”。我看到我可以用x = -1硬编码一个修复程序,但是无法真正理解根本问题和了解解决方案的目的。谢谢。

#include <stdio.h>

int main()
{
    int x = 0;
    char iArray[7] = 'Charles';

    while (x < 7) {
        x++;
        printf("%c\n", iArray[x]);
    }
    return 0;
}

最佳答案

您首先要递增索引,然后使用它来打印。

x++;
printf("%c\n", iArray[x]);


更改为

printf("%c\n", iArray[x]);
x++;


将解决该问题,并避免UB用于访问数组以外的内容。
当循环条件对于x==6仍然为真,并且索引然后增加到7,这将访问iArray[7]时,发生第二个提到的问题。这超出了数组,因为大小为7的数组中可合法访问的最高索引为索引6。

关于c - 打印数组中缺少第一个字符(循环时),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51702107/

10-11 04:25