无法读取C中的EOF字符

发布于 2025-01-05 01:28:24 字数 402 浏览 1 评论 0原文

我在读取 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)

但仍然遇到同样的问题。有人可以告诉我这里是否遗漏了一些东西吗?谢谢。

I have a problem with reading the EOF character for the last input in C

j=0;       
while(*(name2+j)!='\n'){
    if(*(name2+j) == ' '){
        j++;
        continue;
    }
    d[tolower(*(name2+j))]++;
    j++;
}

For the last input, there is no new line character, the value of j is getting set to very large number for a very small string. So, to consider the end of file, i modified the while condition to

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

but still i am having the same problem. Can someone tell if i am missing something here ? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苍白女子 2025-01-12 01:28:24

EOF 是一个 char 范围之外的整数值(因为它的目的是表明没有 char存在),因此如果您希望能够将某个值与 EOF 进行比较,那么您需要检索该值并将其存储为 int 而不是 >字符。

EOF is an integer value outside the range of a char (since its very purpose is to indicate that no char is present), so if you want to be able to compare a value to EOF, then you need to retrieve and store that value as an int rather than as a char.

长伴 2025-01-12 01:28:24

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

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

How did you declare name2 and set it? char can't contain an EOF, but if you got it by the standard input functions, you should have a '\0' terminates it. if so, just change the condition to

while (name2[j] && name2[j]!='\n')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文