Tôi đã đọc trong Dennis Ritchie Cuốn sách Ngôn ngữ lập trình Cint
phải được sử dụng cho một biến để giữ EOF - để làm cho nó đủ lớn để nó có thể giữ giá trị EOF - không char
. Nhưng đoạn mã sau hoạt động tốt:
#include<stdio.h>
main() {
char c;
c=getchar();
while(c!=EOF) {
putchar(c);
c=getchar();
}
}
Khi không còn đầu vào, getchar
trả về EOF. Và trong chương trình trên, biến c
, với kiểu char, có thể giữ nó thành công.
Tại sao điều này làm việc? Theo giải thích trong cuốn sách nói trên, mã không nên hoạt động.
0xff
. Lưu trữ kết quả getchar()
trong một int
giải quyết vấn đề đó. Câu hỏi của bạn về cơ bản giống như câu hỏi 12.1 trong Câu hỏi thường gặp comp.lang.c , đây là một tài nguyên tuyệt vời. (Ngoài ra, main()
nên int main(void)
, và sẽ không đau khi thêm return 0;
trước khi kết thúc }
.)