while( ( c == fgetc( fin_length ) ) != EOF ) {
У вас слишком много знаков равенства. Это должно быть
while( ( c = fgetc( fin_length ) ) != EOF ) {
Когда вы используете ==
, вы получаете два сравнения. Первый - это сравнение между c
и возвращаемым значением fgetc()
.
Второе сравнение сравнивает этот результат (или true
или false
) с EOF
. Я не посмотрел значение EOF
, но это, безусловно, не 0
или 1
- это означает, что второе сравнение никогда не вернет false.