首页 养生问答 疾病百科 养生资讯 女性养生 男性养生

C 语言,文件结束符 EOF问题

发布网友 发布时间:2022-03-27 16:07

我来回答

3个回答

热心网友 时间:2022-03-27 17:36

错在这里了。在C语言中EOF具有特定的含义,是文件结束的标志。而你在这里和getchar()放在一起,是想从键盘来判断是否结束,而键盘输入的字符ASCII码就没有EOF这个标志,所以就错了。
while((c=getchar())!=EOF)
即使你前面定义了EOF://#define EOF -1
这也是错的。因为所有字符的ASCII码都是正的,根本就没有-1这个字符。
你可以使用一个特殊的字符作为结束的标志,比如回车,那么那就应该改成这样的:
while((c=getchar())!=13)
回车的ASCII码就是13。

热心网友 时间:2022-03-27 18:54

楼上说的有道理,你没有从while((c=getchar())!=EOF)跳出去的可能

所以这个循环变成了死循环

不过你这个问题很难办的 因为你统计white space的时候包含了回车键

如果不包含的话 你可以改成这样

while((c=getchar())!='\n')
{
switch(c) {
case'0':case'1':case'2':case'3':case'4':
case'5':case'6':case'7':case'8':case'9':ndigit[c-'0']++ ;break;
case' ':case'\t':nwhite++; break;
default:nother++; break; }
}

如果你要统计回车 你可以用 & * 之类结束。。。EOF使用在文件中的 而不是屏幕输出的

热心网友 时间:2022-03-27 20:29

while((c=getchar())!='\n')
{
switch(c) {
case'0':case'1':case'2':case'3':case'4':
case'5':case'6':case'7':case'8':case'9':ndigit[c-'0']++ ;break;
case' ':case'\t':nwhite++; break;
default:nother++; break; }
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com