Tôi đã bắt đầu đọc "The C Programming Language" (K & R) và tôi có nghi ngờ về chức năng getchar()
.`getchar()` lưu trữ đầu vào của người dùng ở đâu?
Ví dụ mã này:
#include <stdio.h>
main()
{
int c;
c = getchar();
putchar(c);
printf("\n");
}
Gõ toomanychars
+ CTRL +D (EOF) in ra chỉ t
. Tôi nghĩ rằng đó là dự kiến vì nó là nhân vật đầu tiên được giới thiệu.
Nhưng sau đó mảnh này khác mã:
#include <stdio.h>
main()
{
int c;
while((c = getchar()) != EOF)
putchar(c);
}
Gõ toomanychars
+ CTRL +D (EOF) in toomanychars
.
Câu hỏi của tôi là, tại sao điều này xảy ra nếu tôi chỉ có một biến char đơn? các ký tự còn lại được lưu ở đâu?
EDIT:
Nhờ mọi người cho câu trả lời, tôi bắt đầu để có được nó bây giờ ... chỉ có một nhược điểm:
Các lối ra chương trình đầu tiên khi đưa CTRL +D khi các bản in thứ hai toàn bộ chuỗi và sau đó chờ đợi cho đầu vào người dùng hơn. Tại sao nó đợi một chuỗi khác và không thoát ra khỏi chuỗi đầu tiên?
Cách tiếp cận thứ hai của bạn chỉ lặp lại cho đến EOF. CTRL + D (trên các hệ thống unix điển hình) sẽ không dẫn đến EOF trừ khi bạn nhấn nó trên một dòng riêng của nó. Nhấn CTRL + D sau khi bạn đã viết một ký tự không dẫn đến EOF – nos