C - 扫描动态2D字符阵列和分配

时间:2016-12-02 11:37:18

标签: c arrays char malloc

我想拥有一个动态的二维字符数组,最大200并扫描到它。 我不确定如何做到这一点,我想出的就是定义动态数组(我甚至不知道它是否正确):

char **arr = (char **)malloc( (len+1) * sizeof(char*) );
  for (i=0;  (len+1)>0; i++)
    char *arr1 = (char *) malloc ( (len+1) * sizeof(char) );

但是我不知道在(len)中放什么 - 让我说我想要一个51x150的数组,具体取决于扫描的输入。 如何根据扫描值分配数组并打印出来?

输入的一个例子:

####.#...##
##.##.#.###
##.###.#.##
#.##.##.#..

1 个答案:

答案 0 :(得分:2)

您可能希望使用真正的2D数组,而不是分段的查找表。

size_t x = 51;  // user input
size_t y = 150; // user input

char (*arr)[y] = malloc( sizeof(char[x][y]) );
...
arr[i][j] = something;
...
free(arr);

这比分段查找表更快更安全。这样,即使数据大于一行,您也可以将memcpy数据输入和输出数组。