我目前正在尝试使用值初始化2d数组,但仍然遇到分段错误...我注意到它总是在我添加fscanf代码行时发生...但我不明白它有什么问题从我的理解它应该工作...这是一个代码片段:
FILE * fp;
int count, i,j;
int **arr;
arr = (int**)malloc(sizeof(int*)*9);
for(i = 0; i < 9; i++){
arr[i] = (int*)malloc(sizeof(int)*9);
}
fp = fopen("input.txt", "r");
for(i = 0; i < 9; i++){
for(j = 0; j < 9; j++){
fscanf(fp, "%d", &arr[i][j]);
}
}
答案 0 :(得分:1)
在您的代码中,您既不是
malloc()
fopen()
。对于任何一种情况,
如果malloc()
失败,它将返回NULL并使用该指针将导致undefined behaviour。
如果fopen()
失败,它将返回NULL,稍后使用文件指针将再次导致undefined behaviour。
使用chcek来获取所有库函数(通常)并仅在成功时使用返回值。