C++ 为什么';同时使用EOF和'\0';在这一行代码中?

C++ 为什么';同时使用EOF和'\0';在这一行代码中?,c++,c,eof,C++,C,Eof,请原谅我的英语不好,我正在用第4章第4.1节的“C编程语言,第二版”练习C。有一个模式搜索代码(UNIX程序grep) 有一行代码我不太懂 while (--lim > 0 && (c = getchar()) != EOF && c != '\0') 让我困惑的是EOF和'\0'不是一回事吗?使用其中一个是不够的 谢谢您的时间。EOF与'\0' EOF是文件的结尾 '\0'是字符串终止符。EOF与'\0'不同 EOF是文件的结尾 “\0”是字符串终止符。

请原谅我的英语不好,我正在用第4章第4.1节的“C编程语言,第二版”练习C。有一个模式搜索代码(UNIX程序grep)

有一行代码我不太懂

while (--lim > 0 && (c = getchar()) != EOF && c != '\0')
让我困惑的是
EOF
'\0'
不是一回事吗?使用其中一个是不够的


谢谢您的时间。

EOF
'\0'

EOF
是文件的结尾


'\0'
是字符串终止符。

EOF
'\0'
不同

EOF
是文件的结尾

“\0”
是字符串终止符。

  • '\0'
    等于
    0
  • EOF
    等于
    -1
-1!=0
-->
EOF!='\0'

  • '\0'
    等于
    0
  • EOF
    等于
    -1

-1!=0
-->
EOF!='\0'

EOF与'\0'不一样您确定它说的是
'\0'
而不是
'\n'
<代码>'\0'不是您希望从标准输入中读取的字符。@hvd事实上您是对的,我错误地向Visual Studio输入了内容,谢谢您的评论。您应该先查找EOF和任何宏/定义asking@Damon:标准输入可以来自任何地方,而不一定来自键盘。如果它正在从文件中读取,那么给它一个
\0
.EOF与“\0”不一样。您确定它说的是
'\0'
而不是
'\n'
<代码>'\0'不是您希望从标准输入中读取的字符。@hvd事实上您是对的,我错误地向Visual Studio输入了内容,谢谢您的评论。您应该先查找EOF和任何宏/定义asking@Damon:标准输入可以来自任何地方,而不一定来自键盘。如果它是从文件中读取的,那么给它一个
\0
就很简单了。