我写了一个简单的c程序来计算字符数
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
这个程序不打印我的字符。在测试不同的情况时,我发现我陷入了无限的while()
循环。
答案 0 :(得分:7)
此程序不会打印字符
不会。您没有向 print 添加任何语句。
我发现我陷入无限循环
如果您没有点击 条件,那么您将处于循环中。您需要让EOF
退出循环。使用
现在,解决方案:
getchar()
不会打印值。您必须存储值并使用明确打印(如果您愿意),可能putchar()
。
您要么提供EOF
,要么将while()
的中断条件更改为必要无限循环。
除编码问题外,您还需要考虑逻辑。在目前的代码形式中,getchar()
也将换行符(\n
)计为有效字符。要解释一下
$ ./a.out ENTER
一个输入
小号输入
d 输入
˚F输入
克输入
CTRL + d
会产生结果
10
但不我们通常称之为计算字符。您可能也想查看这部分逻辑。
尽管如此,main()
的推荐签名是int main(void)
。
答案 1 :(得分:5)
尝试以下
#include <stdio.h>
int main( void )
{
int c;
long nc = 0;
while ( ( c = getchar() ) != EOF && c != '\n' ) ++nc;
printf( "%ld\n", nc );
}
您必须生成EOF状态(在UNIX系统中为Ctrl + d或在Windows中为CTRL + z)或只需按Enter键。
答案 2 :(得分:2)
试试这样:
#include <stdio.h>
int main(void)
{
int c;
long nc = 0;
while ( ( c = getchar() ) != EOF && c != '\n' )
++nc;
printf( "%ld\n", nc );
}
答案 3 :(得分:2)
while (getchar() != '\n')
++nc;
printf("%ld \n",nc);
工作!