评估用户输入时,代码无法继续

时间:2015-10-03 09:19:55

标签: c arrays string compare conditional

我有一些代码,我问用户是否愿意继续。如果他们输入:

  • no,它要求另一个输入。
  • yes,它继续到下一个代码块。
  • 既不会要求用户再次选择yesno

问题是,当我输入yes时,代码会停止。

以下是代码的主要部分:

int main(){
    int degree=0, ctr, i;
    int factorsp[degree+1], factorsq[1000], coeff[degree+1], answers[degree+1];
    char deg[1000], option[5]="YES", p[1000], q[1000], coeffs[1000], choice[10]="no";

    while(option!="NO"){
        while(degree==0){
            degree=degfunc(degree);
            while(strcmp(choice,"no")==0 && degree!=0){
                printf("The highest degree will be %d.(Yes/No)" ,degree);
                fgets(choice, 4, stdin);
                sscanf(choice, "%s", choice);

                for (i=0; i<strlen(choice);i++){
                    choice[i] = tolower(choice[i]);
                }

                if(strcmp(choice,"yes")==0){
                    printf("hi");
                }

                if(strcmp(choice,"no")==0){
                    degree=0;
                    printf("wew");
                    break;
                }
                else{
                    printf("\007Error! That is not a valid answer!\n");
                    strcpy(choice,"no");
                }
            }
        }

1 个答案:

答案 0 :(得分:1)

这不符合你的想法:

while(option!="NO") {

您必须使用strcmp来比较字符串。另外你可能意味着

else if(strcmp(choice,"no")==0){

而不是if(strcmp(choice,"no")==0){如果您想测试三种结果,是,否,都不是。

接下来,sscanf应该做什么?如果您打算删除fgetschoice[]存储的换行符,那么为什么不查找它并将其替换为&#39; \ 0&#39;?