c - 在c中动态初始化3D字符数组

标签 c

我正在尝试初始化 3D 字符数组,但失败了。当我执行程序时崩溃。 我需要在 ***word 中存储“T”组“N[i]”个单词。每个单词的字符少于 20。 “程序在静态初始化时执行。”

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<math.h>

int main()
{
int i,j,k,T,sum=0;
printf("\nEnter the no of test cases");
scanf("%d",&T);

int *N;
N=(int*)malloc(T*sizeof(int));

int **t;
t=(int**)malloc(T*sizeof(int*));
for(i=0;i<T;i++)
{
    t[T]=(int*)malloc(N[i]*sizeof(int));
}

char ***word;
word = (char ***)malloc(T*sizeof(char**));
        for (i = 0; i< T; i++)
        {
             word[T] = (char **) malloc(N[i]*sizeof(char *));
          for (j = 0; j < N[i]; j++) {
              word[T][N[i]] = (char *)malloc(20*sizeof(char));
          }
        }

最佳答案

在这一行中:

t[T]=(int*)malloc(N[i]*sizeof(int));

N[i] 未初始化。

同样的情况在这里应用 3 次:

      word[T] = (char **) malloc(N[i]*sizeof(char *));
      for (j = 0; j < N[i]; j++) {
          word[T][N[i]] = (char *)malloc(20*sizeof(char));
      }

之后

N=(int*)malloc(T*sizeof(int));

你应该添加一些初始化,例如:

for(i=0;i<T;i++)
{
    N(i) = 10 + i;  // or whatever dimension you need
}

顺便说一句:您不需要 malloc 的所有转换

关于c - 在c中动态初始化3D字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53008038/

相关文章:

用 C 编写的程序可以比用 OCaml 编写并翻译成 C 的程序更快吗?

C - 输出终端输入的最长行

c++ - 如何使用 OpenSSL API 从其 PEM 格式字符串中读取 RSA 公钥?

结构中动态数组中结构中动态分配数组的 C 语法

c - 在 for 循环中使用 scanf

c - 指针指向 Void 的内存分配

c - "parse error at end of input",但我确定我的括号是正确的。 (在 C 中)

C非阻塞键盘输入

c++ - 在二进制追加中获取 ftell() 的问题

c - 当我尝试使用递归打印 1-10 个数字时,mingw gcc 编译器给出了一个我无法理解的错误