**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
我试图读取一个文件,并将文件中的所有字符填充到一个数组中。问题是在while循环中执行停止,并且出现分段错误。这是感兴趣的函数:
void allocAndFillArray(char **arrayChar, FILE *file) {
// *file is checked before the function and
// if the function is called the pointer is not NULL
int len = x; // x is just a random size. In the real function it is the number of characters in the file
*arrayChar = (char *)calloc(len, sizeof(char));
int i = 0;
while (i < len) {
*arrayChar[i] = fgetc(file);
i = i + 1;
} // in this cycle the execution stops after the first iteration
// and only one character is written in the array
// before a crash reported as segmentation fault.
fclose(file);
}
我试着用malloc改变calloc,试着改变大小,但它就是不起作用
1条答案
按热度按时间cetgtptt1#
为什么calloc函数不分配数组?
你没有检查
calloc()
是否成功,你应该检查。但更有可能的是,标题问题的答案是calloc()
实际上 * 正在 * 分配数组。问题是,在while周期中,执行停止,并且存在分段故障错误。
那几乎可以肯定是因为你的功能有缺陷。
你似乎想要这个,而不是:
[]
运算符和所有其他后缀运算符在所有运算符中具有最高的优先级,因此原始语句等效于,如果
i
达到一个非常小的数字以上,几乎肯定会超出*arraychar
指定的对象的边界--很可能达到甚至2,尽管这可能不足以触发segfault。