gpt4 book ai didi

c - while(scanf) 是无限循环吗?

转载 作者:行者123 更新时间:2023-11-30 20:24:22 24 4
gpt4 key购买 nike

该代码应该接受一行包含不同字符的用户输入,然后打印出仅包含字母的一行。例如,Cat8h08er64832&*^ine 将是凯瑟琳。但是,代码可以工作并输出“Catherine”,但程序不会退出... see picture here我不确定循环是否只是无限循环还是......

int main(void){

int i=0, j=0;
char userString[1000];
char alphabet[1000];

printf("Please enter a string: ");

while(scanf("%c", &userString[i])){
if((userString[i]>='A' && userString[i]<='Z')||(userString[i]>='a'&&userString[i]<='z')){
alphabet[j]=userString[i];
printf("%c", alphabet[j]);
j++;
}
i++;
}
printf("\n");
return 0;
}

最佳答案

你的问题是你正在检查 scanf通过检查返回值 0 完成。 scanf返回EOF (通常为-1)当没有更多输入时。因此,如果您获得一些输入(返回 1),然后不再有输入(返回 -1),您的循环将永远不会退出。

更改 scanf检查条件<> EOF .

This answer也很好地解释了这一点。

关于c - while(scanf) 是无限循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33747272/

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