无法读取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')