在 C 中创建一个字符串矩阵(没有 malloc 也没有初始化)

标签 c matrix

我想创建一个每周时间表矩阵,它必须有 8 行和 5 行。每个字符串有 10 个字符。可以像这样使用 malloc 来做到这一点:

char ***Schedule = (char ***)malloc(ROW*sizeof(char **));

for (int i = 0; i < ROW; i++)
{
    Schedule[i] = (char **)malloc(COL*sizeof(char *));

    for (int j = 0; j < COL; j++)
        Schedule[i][j] = (char *)malloc(SIZE*sizeof(char));
}

但我不想使用 malloc,因为看起来代码行太多,矩阵的大小已经很小(8*5*10 = 400 字节)。

char Schedule[8][5][10];

上面的代码不起作用。

char *Schedule[8][5];

这个有效,但我不相信它,因为字符串的大小是不确定的。它可能会崩溃。

最佳答案

也许你正在以错误的方式使用 char Schedule[8][5][10],正确的方法是这样做(示例)

scanf("%s",Schedule[i][j]);

char *Schedule[8][5] 如果您知道它基本上是您可以根据需要为其分配内存的 40 char*,则可以信任。

对于第二种情况,您可以在 Schedule[i][j]=malloc(sizeof(char)*n) 中分配

这些是在代码中使用字符数组的常用方法。这些是创建 char 数组和使用它们的方法。 您找不到其他方法可以做到这一点。

OP 在评论中提问:

Scanning the values worked, thanks. But why " Schedule[i][j] = "abc" " doesn't work?

回答:不能对数组赋值。数组在 C 中是不可赋值的。在这里你可以使用 strcpy(Schedule[0][0] ,"sdwdwd"); 1 因为你知道目的地能够容纳字符串 lliteral.

1。不建议使用 strcpy。这里显示为一个例子,让用户快速了解。为了更安全 strcpy 使用 strcatthis

关于在 C 中创建一个字符串矩阵(没有 malloc 也没有初始化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47058645/

相关文章:

java - 如何用随机数和一些条件创建一个数组?

matrix - 如何在 Octave 中输出矩阵?

c - 为什么要在这条线上投两次?

c - 为什么我的列表合并排序不起作用 -c

c - 如何正确地从右向链表添加节点

c++ - GLM 如何处理翻译

c - 未正确读取矩阵

回文的 C 程序

c - 如何使用 MinGW 和 Sublime Text 3 构建 GLUS

c++ - 使用 C 数组语法将 GNU Octave(或 Matlab)矩阵输出到文件中