回 帖 发 新 帖 刷新版面

主题:《C Programming Lauguage》第20页打印字符串长度问题

我按书中所说写了如下代码:

[code=c]
#include <stdio.h>
int main(int argc, const char * argv[])
{
    double nc;
    for (nc=0; getchar() != EOF;  ++nc)
        ; 
    printf("%.0f/n", nc);
     
    return 0;
}
[/code]

但当我输入“-1”时,程序并没有停止并打印nc...

请问是啥问题?

我是在Mac OSX的Xcode中写的C代码,我用Printf("EOF is %d",EOF)已经查过:EOF的值是-1

谢谢!

回复列表 (共2个回复)

沙发

并非有个EOF被getchar读到并返回
而是
getchar出错或读不到数据时返回EOF

windows下用 CTRL+Z
linux下用 CTRL+D

板凳

谢谢指导!

另见其他指导:
http://bbs.bccn.net/viewthread.php?tid=373467&pid=2124073&page=1#pid2124073

lz1091914999:“你输入-1的时候,getchar()会先接收到'-',然后与EOF(-1)比较,而'-'的ASCII码是:45,所以比较成立,下次又是'1'与EOF(-1)比较,'1'的ASCII码是:49,所以比较也成立,所以不管你输入什么字符都不可能结束这个循环。在Windows的控制台里,输入EOF需要通过ctrl+z组合键,Mac里应该是ctrl+d组合键,楼主可以试试。还有,C里只有整型的变量才能使用++、--运算符,对于double型的变量只能老实的写,x += 1.0(1也可以,不过有隐式的转换) 。 ”

我来回复

您尚未登录,请登录后再回复。点此登录或注册