【发布时间】:2020-05-12 14:37:30
【问题描述】:
我想创建一个包含 26 个单词数组的数组(按第一个字母对单词列表进行排序),所以我相信我相应地分配了内存,但是当我尝试测试运行并尝试设置一个随机单词“hi”时,对于每个必须有单词的位置,它只适用于前 5 个字母,然后返回一个设置错误。请原谅我的代码或描述,我是初学者。帮助
注意:我的两个参数都是在外部函数中定义的,wordArray 是给定文本文件中的单词数组,numWordsPerLetter 是一个整数数组,其中包含以字母表中每个字母开头的单词数。
char*** create_alphabetical_array(char** wordArray, int* numWordsPerLetter){
char*** alphabeticalArrays;
int i, j;
alphabeticalArrays = malloc(sizeof(char**)*26);
for (i = 0; i < 26; i++){
printf("%d\n", numWordsPerLetter[i]+1);
alphabeticalArrays[i] = malloc(sizeof(char*)*numWordsPerLetter[i]+1);
}
for (i = 0; i < 26; i++){
for (j = 0; j < (numWordsPerLetter[i]+1); j++){
printf("%d %d %d\n", i, j, numWordsPerLetter[i]+1); /* using to help debug */
strcpy(alphabeticalArrays[i][j], "hi");
}
}
return (alphabeticalArrays);
}
【问题讨论】:
-
malloc(26)应该是malloc(26 * sizeof(char**))。 -
至于你的问题,不要忘记提供给
malloc的大小是以字节为单位的大小,而不是抽象的“元素”。 -
@Blaze 我以前有过,但在第二次 for 循环的第一次迭代后它给了我一个段错误,这种方式仍然让我在段错误之前完成 5 次迭代
-
您似乎在最后一个维度上忘记了
malloc -
关于:
char*** alphabeticalArrays;和类似声明:请阅读three star programmer
标签: c arrays segmentation-fault malloc strcpy