因为char类型的数据范围是0~255,不可能是-1,EOF定义为0~255之外的数据理论上都是可以的。 一般在C语言中用getchar()函数或scanf获取char类型时,可用EOF作为结束符。但对于C++,若用getchar()函数或scanf获取char类型时,也可用EOF作为结束符,这是兼容C的特性;但若用cin获取char类型数据,若试图用EOF结束输入,输入...
该getchar()!=EOF用来判断是否已经读取完,是在C语言当中使用的:EOF 是-1 即读入的已不是正常的字符而是文件的结束符;当输入字符串的时候,可以使用getchar()读取其中的每一个字符,输入字符串的时候最后一般输入一个回车,回车以后输入缓存里面就没有数据了。只能使用while(getchar()!='\n'...
getchar 等函数的返回值类型都是 int 型,当这些函数读取出错或者读完文件后,会返回 EOF.EOF 是一个宏,标准规定它的值必须是一个 int 型的负数常量。通常编译器都会把 EOF 定义为 -1.问题就出在这里,使用 char 型变量接收 getchar 等函数的返回值会导致对 EOF 的辨认出错,或者错把好的数据误认为是 EOF,或...
EOF实际为-1,而char即是signed char,所以按此分析,该程序应该不会出现死循环的情况,因为ch可以正确存储EOF值,即-1,从而while循环可以正常结束。实质上,应该如此定义:int ch; 这是因为getchar函数返回值类型为int。
ch=getchar())!='\n' 只是判断了ch不是‘\n’ch=getchar())!=EOF&&ch!='\n' 要求ch不能是‘\n’也不能为EOF(END OF FILE),文件末尾的站位符
getchar的返回值(来源于cplusplus.com) 此解释的翻译为: 成功时,返回读取的字符(提升为 int 值)即字符的Ascall值。返回类型是 int 以适应特殊值 EOF,表示失败:如果标准输入位于文件末尾,则函数返回 EOF 并设置标准输入的 eof 指示符 (feof)。如果发生其他读取错误,该函数也会返回 EOF,但会设置其错误指示符 (...
因为前面有 scanf("%s",filename); 输入文件名结束时的 回车键 还残留在输入流中。第一个 ch=getchar(); 消耗掉 那个 残留在输入流中的 回车键 第二个 ch=getchar(); 才读入 一个有用的字符。接着进入 while 语句 的 判断: 是否 ch!=EOF 再循环。
“=”是赋值号,它的优先级是最低的 “!=” 是一个比较符号,优先级高于赋值号 “!=”和“==”是同一优先级,都是用于比较的
两个调用的函数不一样 getchar()如果是读到文件末尾的话就返回EOF,EOF的值其实是-1,表示的是 end of file的意思 gets()的话是返回一个指针的,如果读到了文件末尾就返回空了,也就是NULL
getchar是读入函数的一种。它从标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为...