MoiraFish 发表于 2020-9-11 16:33:35

C语言字符计数程序出不来结果

#include<stdio.h>
main()
{
       long nc;
       nc = 0;
       while (getchar() != EOF)
            ++nc;
            printf("%ld\n", nc);
}
用的软件是VS2019
求助大家!

Unicorn# 发表于 2020-9-11 16:35:44

键盘输入没有EOF,文件末尾才有EOF
EOF就是end of file(文件末尾)
可以输入一个特殊符号表示结束(如0)

小甲鱼的铁粉 发表于 2020-9-11 16:52:55

这个EOF是文件里面使用的,可以修改一下
#include<stdio.h>
int main()
{
       long nc;
       nc = 0;
       while (getchar() !=' \n')
            ++nc;
       printf("%ld\n", nc);
}
以输入回车健停止判断退出循环

jackz007 发表于 2020-9-11 18:10:53

本帖最后由 jackz007 于 2020-9-11 18:12 编辑

       在 Windows 下,long 和 int 一样都是32位整型,如果想定义64位整型应该用 long long,如果要显示一个 64 位整型数,printf() 的格式描述符不能用 "%ld" 应该按照微软的规矩,使用 "%I64d",因为,这个函数是 Windows 的库函数,各项输入参数是由 Windows 负责解析的。
#include <stdio.h>
main(void)
{
       long long nc                   ;
       nc = 0                         ;
       while (getchar() != EOF) nc ++ ;
       printf("%I64d\n" , nc)         ;
}

405794672 发表于 2020-9-12 19:33:29

按键没有EOF,所以一直在计算,如果你按得够快,你电脑会卡死。把EOF换成'/n',表示换行,即按下了回车键,while就会退出,然后可以运行。
等等,while也可以不加大括号吗?
页: [1]
查看完整版本: C语言字符计数程序出不来结果