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

时间:2017-11-01 15:45:45

标签: 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];

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

中进行分配

这些是在代码中使用char数组的常用方法。这些是创建char数组并使用它们的方法。 你不会找到其他方法来做同样的事情。

OP在评论中说:

  

扫描价值观有效,谢谢。但为什么“Schedule [i] [j] =”abc“”   不起作用?

Ans:你不能在数组上使用赋值。数组不能在C中赋值。您可以使用strcpy(Schedule[0][0] ,"sdwdwd"); 1 ,因为您知道目标能够保存字符串lliteral。

1。不建议使用strcpy。这里作为一个例子给出了一个快速的想法。为了更安全strcpy使用strcat,例如this