LINUX.ORG.RU

История изменений

Исправление Northsoft, (текущая версия) :

Если Вы используете getchar/fgetc, то обращаю Ваше внимание на то, что тип возвращаемого значения указан как int. Причина как раз в том, чтобы EOF заведомо не совпадала ни с одним из возможных значений char. Согласитесь, было бы странно, если бы файл, заполненный значениями 0xFF, останавливал своё чтение на первом же байте (кстати, предлагаю проверить скомпилированную на x86 программу вариантом, когда посреди файла есть байт со значением 0xFF, вбить можно в любом HEX-редакторе). Поэтому порядок таков:

int getcResult;
char gotChar;
while ( (getcResult = getchar()) != EOF ) {
    gotChar = (char) getcResult;
    /* fürther processing */
}
На будущее рекомендую всегда включать предупреждения и добиваться их понимания, дабы избежать настолько досадных ошибок, что их умудряется обнаруживать даже железяка.

Исправление Northsoft, :

Если Вы используете getchar/fgetc, то обращаю Ваше внимание на то, что тип возвращаемого значения указан как int. Причина как раз в том, чтобы EOF заведомо не совпадала ни с одним из возможных значений char. Согласитесь, было бы странно, если бы файл, заполненный значениями 0xFF, останавливал своё чтение на первом же байте (кстати, предлагаю проверить скомпилированную на x86 программу вариантом, когда посреди файла есть байт со значением 0xFF, вбить можно в любом HEX-редакторе). Поэтому порядок таков:

int getcResult;
char gotChar;
while ( (getcResult = getchar()) != EOF ) {
    gotChar = (char) getcResult;
    /* fürther processing */
}
На будущее рекомендую всегда включать предупреждения и добиваться их понимания, дабы избежать настолько досадных ошибок, что их умудряется обнаруживать даже железяка.

Исходная версия Northsoft, :

Если Вы используете getchar/fgetc, то обращаю Ваше внимание на то, что тип возвращаемого значения указан как int. Причина как раз в том, чтобы EOF заведомо не совпадала ни с одним из возможных значений char. Согласитесь, было бы странно, если бы файл, заполненный значениями 0xFF, останавливал своё чтение на первом же байте (кстати, предлагаю проверить скомпилированную на x86 программу вариантом, когда посреди файла есть байт со значением 0xFF, вбить можно в любом HEX-редакторе). Поэтому порядок таков:

int getcResult;
char gotChar;
while ( (getcResult = getchar()) != EOF ) {
    gotChar = (char) getcResult;
    /* fürther processing */
}