gpt4 book ai didi

取决于 getchar 返回值的计数器给出错误的输出

转载 作者:行者123 更新时间:2023-11-30 18:29:30 27 4
gpt4 key购买 nike

#include <stdio.h>

int main(void)
{

char ch;
int count;

while((ch=getchar())!=EOF){
if(ch==' '){
count++;
}
}
printf("total words is %d",count);
return 0;
}

我的C代码在这里,我很困惑我在windows中直接把ctrl+Z放在哪里,结果计数是2?为什么它循环两个,空间从哪里来?

最佳答案

这里最大的问题是,您没有初始化 count 。因此,无论 if 是否成功,您最终都会读取一个调用 undefined behavior 的未初始化局部变量。 .

您应该始终初始化局部变量,例如

 int count = 0;

也就是说,getchar() 返回一个 int。将其存储到 char 中是错误的,因为如果函数返回 EOF (正如您所期望的那样),它将不适合 char .

关于 EOF marco,引用 C11,第 §7.21.1 章

EOF
which expands to an integer constant expression, with type int and a negative value, that is returned by several functions to indicate end-of-file, that is, no more input from a stream;

因此,您应该将 ch 的类型从 char 更改为 int,例如

int ch = 0;

关于取决于 getchar 返回值的计数器给出错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37774904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com