use*_*127 -1 c while-loop getchar
我正在阅读Kernighan Ritchie并且有这个角色计数程序,所以我尝试了实施
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
int i;
c = getchar();
while (c != EOF)
i= i + 1;
printf("%d",i);
}`
Run Code Online (Sandbox Code Playgroud)
当我编译并运行此代码时,在输入一些字符后,之后没有输出.没有打印数字,我无法弄清楚原因.代码看起来很好.我也试过使用scanf(),但同样的事情发生了.
下一个例子是计算输入中的行数,同样的问题也存在.
在你的代码中,当你正在击中
i= i + 1;
Run Code Online (Sandbox Code Playgroud)
初始值i是不确定的.因此,整个程序调用 未定义的行为.你需要初始化i.
详细说明,i作为一个自动局部变量,除非明确初始化,否则内容是不确定的.在这种情况下使用不确定的值将导致UB.
也就是说,a char不能保存值EOF,将类型更改为int.
在那之后,你的逻辑错了.getchar()它本身不是一个循环,你需要getchar()在while循环体内调用以更新c条件检查中使用的值while.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |