在c代码中按下输入键时如何退出循环?

时间:2014-11-11 20:04:10

标签: c

#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循环,程序工作正常,但一旦你使用它进入无限循环...我怎么能改变这个代码?我想继续询问字符串,直到用户按下回车键退出。否则它应该继续询问字符串。

1 个答案:

答案 0 :(得分:0)

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

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