2016-01-21 2 views
0

Im пишет коту, которая генерирует гистограмму файла pgm. Он работает по назначению, но сохранение результатов в CSV-файле приводит к сбою утверждения. Печать результатов на экране работает хорошо, поэтому моя ошибка должна быть где-то в функции fprintf. «histogram.csv» генерируется должным образом без какой-либо ошибки, но пустой. Как исправить сохранение?C - ошибка с ошибкой утверждения

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

Вы закрываете файл с помощью 'fclose'? – dbush

+0

Сделать привычкой компилироваться с активированными предупреждениями, например, при использовании gcc используйте его как «gcc -Wall <...>». –

+0

typo 'if (hist_file = NULL)' -> 'if (hist_file == NULL)' –

ответ

3

Ваш чек, чтобы проверить, действительно ли hist_file является NULL, является назначением. Вы назначаете NULL указателю на файл, а так как 0 - false, вы никогда не увидите "Error opening histogram". После этого вы пытаетесь напечатать нулевой указатель, чтобы вы ничего не получили в своем файле.

Вы также должны войти в привычку закрывать свои файлы. Если вы попытаетесь закрыть нулевой файл, вы должны получить возвращаемое значение EOF, которое даст подсказку о том, где проблема.

Смежные вопросы