【问题标题】:dynamically initialize a 3D character array in c [duplicate]在c中动态初始化一个3D字符数组[重复]
【发布时间】:2019-03-31 04:10:02
【问题描述】:

我正在尝试初始化一个 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));
          }
        }

【问题讨论】:

    标签: c


    【解决方案1】:

    在这一行:

    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的所有演员表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 2015-07-25
      相关资源
      最近更新 更多