首页 > 解决方案 > 如何使二维字符数组完全为空?

问题描述

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

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

    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

标签: c

解决方案


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

calloc 文档


推荐阅读