无法读取C中的EOF字符

时间:2012-02-12 23:03:49

标签: c string input eof

我在读取C

中最后一个输入的EOF字符时遇到问题
j=0;       
while(*(name2+j)!='\n'){
    if(*(name2+j) == ' '){
        j++;
        continue;
    }
    d[tolower(*(name2+j))]++;
    j++;
}

对于最后一个输入,没有换行符号,对于非常小的字符串,j的值被设置为非常大的数字。因此,为了考虑文件的结尾,我将while条件修改为

while(*(name2+j)!='\n' && (*(name2+j))!=EOF)

但我仍然遇到同样的问题。有人能说出我在这里遗失了什么吗?感谢。

2 个答案:

答案 0 :(得分:4)

EOF是一个超出char范围的整数值(因为它的目的是表明没有 char存在),所以如果您希望能够将值与EOF进行比较,然后您需要检索该值并将其存储为int而不是char

答案 1 :(得分:2)

你是如何声明name2并设置它的? char不能包含EOF,但如果您通过标准输入函数获得它,则应该'\0'终止它。如果是这样,只需将条件更改为

while (name2[j] && name2[j]!='\n')