C - 断言失败错误

时间:2016-01-21 21:57:18

标签: c csv printf

我正在写一个生成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]);

}

1 个答案:

答案 0 :(得分:3)

检查hist_file是否为NULL实际上是一项任务。你为文件指针指定了NULL,因为0是假的,你永远不会看到"Error opening histogram"。之后,您尝试打印到空指针,这样您的文件中就什么也得不到了。

你应该养成关闭文件的习惯。如果您尝试关闭空文件,则应获得EOF返回值,这将提示问题的位置。