Bạn nên thay đổi ngoặc của bạn để
while((c = getchar()) != EOF)
Bởi vì "=" nhà điều hành có độ ưu tiên thấp hơn "! =" Điều hành. Sau đó, bạn sẽ nhận được kết quả mong đợi. Biểu thức của bạn bằng
while (c = (getchar()!= EOF))
Bạn nhận được kết quả của hai là đầu ra, vì bạn đang so sánh "c! = EOF". Điều này sẽ luôn luôn trở thành một cho ký tự bạn đã nhập và sau đó "\ n" theo sau bằng cách nhấn trả về. Ngoại trừ lần so sánh cuối cùng trong đó c thực sự là EOF, nó sẽ cung cấp cho bạn 0.
CHỈNH SỬA về EOF: EOF thường là -1, nhưng điều này không được đảm bảo theo tiêu chuẩn.Tiêu chuẩn này chỉ định nghĩa về EOF trong phần 7.19.1:
EOF mà mở rộng để một biểu thức hằng số nguyên , với kiểu int và một giá trị tiêu cực, được trả về bởi một số chức năng để chỉ end-of -file, tức là, không có thêm đầu vào từ luồng;
Giả sử rằng EOF bằng -1, nhưng khi sử dụng EOF, bạn không nên kiểm tra giá trị cụ thể, mà là sử dụng macro.
Bạn có muốn làm rõ không? Câu hỏi của bạn là gì? – qrdl
Tôi muốn đưa vào EOF và nhận được để xem printf ("% d - tại EOF \ n", c); –
và EOF được gọi là -1 nhưng nó diễn giải là ba ký tự và đặt ra số 1 –