我是C编程的新手,想要清楚,似乎是一个愚蠢的怀疑......
代码:
#define EOF 0
main()
{
int c;
c=getchar();
while (c!= EOF)
{
putchar (c);
c= getchar();
}
}
这应该只返回我输入的值......但是相应的......当我输入0时它不应该终止吗?如果不是......'while'下的陈述究竟是什么意思? 任何帮助将非常感谢家伙:)
答案 0 :(得分:2)
EOF
表示当你点击linux中的ctrl + d
时,它发送EOF
信号,它不一定是0
。
答案 1 :(得分:1)
getchar
函数返回输入的ASCII值(48为零,或'0'
),或者在头文件EOF
中返回一个名为<stdio.h>
的值(通常为-1) )。
因此,如果您想要停止在EOF(正确的EOF,而不是您定义的那个)或者如果用户写入零,那么这将更好地工作:
#include <stdio.h>
int main()
{
int c = getchar();
while (c != EOF && c != '0')
{
putchar(c);
c = getchar();
}
return 0;
}
答案 2 :(得分:1)
EOF
肯定不是0
(也不是'0'
,char字面等于48)。它根本不是char
。 stdio.h
(您应该#include
- ing!)将其定义为-1
。它表示您正在阅读的文件中没有更多数据。它不是流中的一个字节,而是io库指示它已完成的方式。
getchar
需要返回int
的全部原因是文件结尾指示符不可能是文件中的有效字节。
其他功能表示已达到不同的EOF:fgets()
返回NULL
。返回读取的字节数的read()
返回0,表示它什么都不读。
答案 3 :(得分:0)
当您输入0
时,它实际上不是零,只是ASCII character 0
。它的数值为48,可以通过printf("%d\n", '0');
验证,它打印48. EOF
是实际零,也就是说,它的表示基本上为零。