【发布时间】:2021-06-16 15:17:35
【问题描述】:
您好,我一直在尝试将字符串映射转换为二维数组,但我更改的越多,我就越感到困惑。现在它没有编译并抱怨它的= NUL(编辑我添加了malloc,似乎并给出了分段错误)。
#include <unistd.h>
#include <stdlib.h>
char **stoa(char *str)
{
int i;
int j;
int k;
char **map;
//int len = ft_strlen_line(str);
//int row = ft_strlen(str);
i = 0;
j = 0;
k = 0;
//arow = row/len;
//map = malloc(j * k sizeof(char*));
map = malloc(j * sizeof(k));
while(str[i])
{
if (str[i] == '\n')
{
k = 0;
j++;
}
map[j][k] = str[i];
k++;
i++;
}
free(map);
return (map);
if (!(map = malloc(j * k * sizeof(char))))
return NULL;
}
int main(void)
{
char row12[] = "ABABABABAB\nABABABABAB\nABABABABAB\n\0";
char **map;
map = stoa(row12);
return (0);
}
【问题讨论】:
-
char **map只是声明了一个指针。您必须使用malloc分配所需的内存。 -
给我们一个示例输入以及您希望该输入的输出。你事先知道矩阵维度吗?
-
什么是字符串映射?你能把它显示为文本吗?还是 ASCII 艺术?
-
我添加了一些简单的测试器。我猜它根本不做数组,只是复制字符串。
-
j * sizeof(k)为 0。