我想拥有一个动态的二维字符数组,最大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的数组,具体取决于扫描的输入。 如何根据扫描值分配数组并打印出来?
输入的一个例子:
####.#...##
##.##.#.###
##.###.#.##
#.##.##.#..
答案 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
数据输入和输出数组。