我在读取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)
但我仍然遇到同样的问题。有人能说出我在这里遗失了什么吗?感谢。
答案 0 :(得分:4)
EOF
是一个超出char
范围的整数值(因为它的目的是表明没有 char
存在),所以如果您希望能够将值与EOF
进行比较,然后您需要检索该值并将其存储为int
而不是char
。
答案 1 :(得分:2)
你是如何声明name2
并设置它的? char
不能包含EOF
,但如果您通过标准输入函数获得它,则应该'\0'
终止它。如果是这样,只需将条件更改为
while (name2[j] && name2[j]!='\n')