我正在写一个生成pgm文件直方图的cote。它按预期工作,但将结果保存到.csv文件会导致断言失败。在屏幕上打印结果效果很好,因此我的错误必须在fprintf函数中的某处。 “histogram.csv”是正确生成的,没有任何错误,但它是空的。如何解决保存问题?
int counter;
hist_file = fopen("histogram.csv", "w");
if (hist_file = NULL){
printf("Error opening histogram");
exit(1);
}
for (i = 0; i <= bright; i++){
histogram[i] = 0;
}
for (i = 0; i < height; i++){
for (j = 0; j < width; j++) {
for (counter= 0; counter<= bright; counter++){
if (piksel[i][j] == counter){
histogram[counter]++;
}
}
}
}
for (i = 0; i <= bright; i++){
printf( "%d: %d\n",i, histogram[i]);
fprintf(hist_file, "%d, %d\n", i, histogram[i]);
}
答案 0 :(得分:3)
检查hist_file
是否为NULL实际上是一项任务。你为文件指针指定了NULL,因为0是假的,你永远不会看到"Error opening histogram"
。之后,您尝试打印到空指针,这样您的文件中就什么也得不到了。
你应该养成关闭文件的习惯。如果您尝试关闭空文件,则应获得EOF
返回值,这将提示问题的位置。