int main()
{
int c;
c = getchar();
while (c!=EOF){
putchar(c);
c=getchar();
}
return 0;
}
在上面的代码中,当我输入值-1时为什么循环没有被终止 我从这段代码得到的EOF = -1值
main()
{
printf("EOF is %d\n",EOF);
}
当我使用 Ctrl + D 时,代码被终止,有没有其他方法可以在不使用 Ctrl + d
答案 0 :(得分:8)
因为在控制台上输入-1
并不会生成EOF。相反,getchar()
会将其视为两个单独的字符'-'
和'1'
。
如果你想用-1
输入终止它,那么你必须跟踪两个字符并比较它们以退出循环而不是与EOF进行比较。但这实际上并不等同于生成EOF。
终止的另一个选项是通过控制台中的输入重定向<
将标准输入重定向到文件。当输入文件的读数结束时,它将发出EOF信号。
答案 1 :(得分:1)
如果你想在不按ctrl + D的情况下循环出代码,那么有多种方法可以实现。我将向您展示使用基本if条件执行此操作的最简单,最低效的方法。仔细阅读代码,如果您有任何疑问,请随时对其进行评论。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int c;
c = getchar();
while ((c != EOF))
{
if (c == 'i')
break;
putchar(c);
c = getchar();
}
return 0;
}