я скомпилированный это (GCC компилятор):обработки в C Файл: не может понять выход
#include< stdio.h>
main() {
unsigned char ch;
FILE *fp;
fp=fopen("trial","r");
while((ch=getc(fp))!=EOF)
printf("%c",ch);
fclose(fp);
}
Это дает follwing:
Warning: comparison is always true due to limited range of the data type
Исполняя, бесконечный поток символов напечатан на терминале. (при условии, что я создал файл с именем «пробный» до компиляции программы и написал текст в файле.)
Просьба объяснить предупреждение .....
Если я беру нормальный символ (в отличие от unsigned char), он может представлять значения от -128 до +127, а EOF - численно -1.Возможно ли, чтобы подписанный символ соответствовал EOF? – Abhay
@Abhay, no. Проблема сложнее. EOF представляет собой целое число -1, которое представлено иначе, чем char -1. Это сделано специально, чтобы вы не могли путать значение символа с индикатором конца файла. – Neil