动态初始化C中的3D字符数组

时间:2018-10-26 11:46:25

标签: c

我正在尝试初始化3D字符数组,但无法初始化。当我执行程序崩溃。     我需要在*** word中存储“ N”个单词的“ T”组,每个单词的字符数小于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));
          }
        }

1 个答案:

答案 0 :(得分:0)

在这一行:

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