【发布时间】:2018-07-01 05:26:49
【问题描述】:
我对 EOF 有疑问。
首先,我正在编写一个简单的程序来处理/打印用户的输入。
但是,程序也会在输出中复制 EOF。
例如,我的操作系统是窗口,当我按顺序键入 (Enter -> cntrl + z -> Enter) 时,我的 EOF 工作。如果我输入“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++;
}
【问题讨论】:
-
不是问题,但您应该使用标准的
int main(void)而不是main() -
EOFnot 是char类型的值(例如,在char-s 为unsigned的计算机上,EOF可能为-1) .所以你不能复制EOF,根据定义! -
一个好问题。只使用屏幕截图很可惜。请将文本粘贴为文本。要从 CMD 窗口中的窗口执行操作,请在窗口的属性选项 TAB 中启用“快速编辑模式”。