我正在使用 malloc 创建一个二维数组,当我遍历数组时,那里有我不想要的字符和符号。数组不应该完全为空吗?

我试图将空字符分配给每一行的开头,但这不会改变任何东西。

    char **structure;
    structure = malloc(sizeof *structure * 2);
    if (structure) {
        for (size_t i = 0; i < 2; i++) {
            structure[i] = malloc(sizeof *structure[i] * 20);
            structure[i][0] = '\0';
        }
    }
    for (int i = 0; i <= 2; i++) {
        for (int j = 0; j < 20; j++) {
            printf("%c ", structure[i][j]);
        }
        printf("\n");
    }


我希望输出只是空格,但这就是出现的情况:
Z Ñ             P  Ñ             l   L O
Z Ñ               P  Ñ             N U M B

最佳答案

您应该使用 calloc 函数;这是我经常使用的。它的工作与 malloc() 相同,但它使用 0 初始化所有分配的位。

calloc documentation

关于c - 如何使二维字符数组完全为空?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55557086/

10-11 16:56