【问题标题】:unable to read the EOF character in C无法读取 C 中的 EOF 字符
【发布时间】:2012-02-12 23:03:48
【问题描述】:

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

但我仍然遇到同样的问题。有人能告诉我这里是否遗漏了什么吗?谢谢。

【问题讨论】:

  • name2的声明是什么?请记住,EOF 不能 适合 char 变量。
  • EOF 通常是错误编程的标志。
  • 是的.. name2 是 char 数组,了解问题所在。谢谢大家:)

标签: c string input eof


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      相关资源
      最近更新 更多