gpt4 book ai didi

c - 在c代码中按下回车键时如何退出while循环?

转载 作者:行者123 更新时间:2023-11-30 17:26:07 28 4
gpt4 key购买 nike

#include <stdio.h>
#include <math.h>
#include <string.h>

int main(void){

char str[100];
char final;
int sum = 0;
int i = 0;
int reminder;

printf("Enter an abitrarily long string, ending with carriage return > ");

while(1){
//get user input of string unless they enter key exit
if((scanf("%[^\n]s", str)) != '\n'){
for(i = 0; i < strlen(str) ; i++)
{
sum += str[i];
}
reminder = sum%64; //sum of char then divide by 64 and remainder of sum
reminder = reminder + 32; // remainder + 32
final = reminder; //change the int to char
printf("Check sum is %c\n", final); // output
printf("Enter an abitrarily long string, ending with carriage return > ");
}
else
break;
}
return 0;
}

问题是,如果我不使用 while 循环,程序可以正常工作,但是一旦使用 while,它就会进入无限循环...我该如何更改此代码?我想继续询问字符串,直到用户按 Enter 键退出。否则它应该继续询问字符串。

最佳答案

scanf 不返回字符值,这是您当前正在检查以终止循环的字符值。它返回从格式字符串成功解析的项目总数。这显然不等于 '\n'。

您需要使用 strcmp 来检查 str 是否包含换行符。

关于c - 在c代码中按下回车键时如何退出while循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26873515/

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