我正在编写一个程序,在我的程序中,我需要将信息从第一个一维数组复制到二维数组中,但是每次一维数组中有一个\n 时,它都应该进入二维数组中的不同槽。例如,如果一维数组是 你好\n世界 在二维数组中它将变成 你好/n 在第一个插槽和 第二个插槽中的世界。
这是我的代码,但出现段错误。在此步骤之前,我的程序中已经创建了名为 chars 的数组。
words = (char**) malloc(numWords*sizeof(char));
int copyCountForChars=0;
int copyCountForWords=0;
while(copyCountForWords <= numWords)
{
words[copyCountForWords][copyCountForChars] = chars[copyCountForChars];
// printf("%c",chars[copyCountForChars]);
if(chars[copyCountForChars] == '\n')
{
// printf("%c",chars[copyCountForChars]);
copyCountForWords++;
}
copyCountForChars++;
}
最佳答案
二维数组的内存分配应该像这样完成。
words = malloc(sizeof(char *) * size1);
for(i = 0; i< size1; i++)
{
words[i] = malloc(sizeof(char) * size2);
}
关于C 二维数组段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28555449/