无法读取C中的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) 

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

EOF是一个char范围之外的整数值(因为它的目的是表明没有 char存在),所以如果你想能够将值与EOF进行比较,那么你需要检索并存储该值为一个int而不是一个char

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

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