Я читав у книзі " Програмування на мову С Денніса Річі", яку intнеобхідно використовувати для змінної для зберігання EOF - щоб зробити її достатньо великою, щоб вона могла містити значення EOF - ні char. Але наступний код працює добре:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Коли більше немає введення, getcharповертається EOF. І у вищенаведеній програмі змінна cз типом char здатна успішно утримувати її.
Чому це працює? Відповідно до пояснення у вищезгаданій книзі, код не повинен працювати.
0xff. Збереження результату getchar()в Ап intвирішує цю проблему. Ваше запитання по суті те саме, що питання 12.1 в FAQ. comp.lang.c , що є прекрасним ресурсом. (Крім того, main()має бути int main(void), і не завадило б додати return 0;до закриття }.)