У меня есть вопрос по поводу EOF.
Прежде всего, я пишу простую программу, которая копирует / печатает ввод пользователя.
Однако программа копирует EOF также в выходной файл.
Например, мой O.S - это Window, и мой EOF работает, когда я набираю (Enter -> cntrl + z -> Enter) по порядку. Если я ввожу комбинацию клавиш «Hello» + Enter + EOF, вывод выводит странную букву («?») В конце скопированного пользовательского ввода.
Как мне избавиться от '?' в конце вывода, и почему это происходит?
#include <stdio.h>
void copy(char to[], char from[]);
main()
{
int i;
int c;
char origin[10];
char copied[10];
for(i = 0; (c = getchar()) != EOF; ++i)
{
origin[i] = c;
}
copy(copied, origin);
for(i = 0; i < 10; i++)
putchar(copied[i]);
}
void copy(char to[], char from[])
{
int i;
i = 0;
while((to[i] = from[i]) != '\0')
i++;
}