学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 20 12
发新话题
打印

虚心

虚心

我是菜鸟,问个很初级的问题,请别笑话,因为确实不明白,书上的一个例子:
  #include<stdio.h>
  main()
{
long nc;
while(getchar() != EOF)
++nc;
printf("%d\n",nc);
}
请问这个程序输入什么才能结束?我无论输入什么都结束不了

TOP

ctrl+Z然后回车(假如你用windows)

C/C++讨论群:46520219 3996098 21035626 57909089
免费的C/C++算法学习论坛:http://yzfy.org

TOP

可以ctrl+D,如果你是linux

TOP

while(getchar() != EOF)
这句是什么意思?我也初学/请说下。

只知道这是当循环。/但里面的表达式怎么没见过呢
人生若只如初见/何事秋风悲画扇

TOP

while(getchar() != EOF)
    nc++;

// 读取字符一直到文件结尾
// Ctrl + Z 模拟文件结尾

getchar() 读取到文件结尾就会返回 EOF    // EOF 一般为 -1
—>〉Sun〈<—

TOP

输入-1
EOF就是定义为-1的
在夜的寂静里静静聆听时间流逝的声音......

TOP

同意5楼所说,“Ctrl + Z 模拟文件结尾”
EOF不一定是-1,各编译器有所不同
人不己知,而不愠,不亦君子乎?

TOP

EOF定义为-1是一个很好的选择,很它不应该大于等于0,-1又很符合程序员的习惯.
应广大C语言学习者的强烈要求,为了让更多的人能够使用上<<C语言库函数查询器>> 。产品的价格调整为20元人民币,欢迎广大C语言学习来购买。联系QQ:475818502,E-mail:zhaoxufeng9997@126.com,也可留言.

TOP

因此,我可这样说非常绝大多的编译器都不会冒险把EOF定义为其它的数.
应广大C语言学习者的强烈要求,为了让更多的人能够使用上<<C语言库函数查询器>> 。产品的价格调整为20元人民币,欢迎广大C语言学习来购买。联系QQ:475818502,E-mail:zhaoxufeng9997@126.com,也可留言.

TOP

输入-1是不行的,因为是getchar(),而-1是两个字符
如果这个程序是模拟读取文件中字符数的话,
应该把nc赋初值,打印时应该用%ld,即下面这样:
复制内容到剪贴板
代码:
#include<stdio.h>
int main()
{
    long nc=0;
    while(getchar() != EOF)
        ++nc;
    printf("%ld\n",nc);
    return 0;
}
“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!

TOP

 20 12
发新话题