C - 扫描动态二维字符数组并进行分配

标签 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 的数组,具体取决于扫描的输入。 如何根据扫描到的值分配数组并打印?

输入示例:

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

最佳答案

您可能想使用真正的二维数组而不是分段查找表。

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 数据进出数组,即使该数据大于一行。

关于C - 扫描动态二维字符数组并进行分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931336/

相关文章:

c# - 在 C# 中,引用数组变量是否更慢?

c++ - 如何遍历字符串中的每个字符?

string - 如何将单元素字符串转换为字符?

c - 左键单击托盘图标上下文菜单后发送了什么消息?(windows api)

c - char s[] 和 char *s 有什么区别?

c - memcpy() 是否使用 realloc()?

c++ - 用另一个新语句重置动态数组,需要先删除吗?

c - 用 C 对字母表进行编码打印

c - *(字符**)的使用

c - MPI C 中的一般运行时间测量