我写了一个简单的c程序来计算字符数
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
Run Code Online (Sandbox Code Playgroud)
这个程序不打印我的字符.在测试不同的情况时,我发现我陷入无限while()循环.
这个程序不打印我的字符
它不会.您没有添加任何语句来打印它们.
我发现我陷入无限循环
如果不打的分断条件,你就可以在回路中.你需要EOF退出循环.使用
现在,解决方案:
getchar()不会打印值.您必须存储值并明确打印(如果您愿意)使用,也许putchar().
EOF否则你要么提供或改变while()从基本无限循环中出来的破坏条件.
除了编码问题,你还需要考虑逻辑.在目前的代码形式中,也getchar()将newline(\n)计为有效字符.解释一下,输入的形式
$ ./a.out ENTER
a ENTER
s ENTER
d ENTER
f ENTER
g ENTER
CTRL+D
会产生结果
10
但这不是我们通常称之为角色的东西.您也可以查看逻辑的这一部分.
也就是说,推荐的签名main()是int main(void).
请尝试以下方法
#include <stdio.h>
int main( void )
{
int c;
long nc = 0;
while ( ( c = getchar() ) != EOF && c != '\n' ) ++nc;
printf( "%ld\n", nc );
}
Run Code Online (Sandbox Code Playgroud)
您必须生成EOF状态(在UNIX系统中为Ctrl + d或在Windows中为CTRL + z)或只需按Enter键.
| 归档时间: |
|
| 查看次数: |
1145 次 |
| 最近记录: |