#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循环,程序工作正常,但一旦你使用它进入无限循环...我怎么能改变这个代码?我想继续询问字符串,直到用户按下回车键退出。否则它应该继续询问字符串。
答案 0 :(得分:0)
scanf不返回字符值,这是您当前检查以终止循环的字符。它返回从格式字符串中成功解析的项目总数。这显然不等于'\ n'。
您需要使用strcmp来检查您的str是否包含换行符。