#include <cstdio>
void fcopy(FILE* from, FILE* to);
int main()
{
fcopy(stdin, stdout);
return 0;
}
void fcopy(FILE* from, FILE* to)
{
int c;
while ((c = getc(from)) != EOF) {
putc(c, to);
}
}
Когда я запускаю эту программу, возникает некоторая неожиданная ситуация с^Z (Ctrl + z), которую я буду использовать для указания EOF.(C/C++) EOF в windows7
Ввод "hello \ n" выполняет цикл while в 'fcopy' для печати того же.
"^ Z \ n" завершает работу программы.
Но если я введу «blahblah^Zasdfasdf \ n», в то время как я ожидал, что программа напечатает «бла-бла» и закончится, она напечатает «blahblah →» с помощью маленькой стрелки и ждет моего ввода. Все, что я записываю здесь, будет скопировано точно так же; он, похоже, повторно выполняет цикл, отсекая все, что написано после «^ Z».
in: hello
out: hello
in: hello^Z
out/in: hello→?? // "??" is my input
out: ??
in: ^Z
termination
Может ли кто-нибудь объяснить, почему программа работает именно так? Спасибо за любую помощь, заранее.