C 编程 if 语句中的 strcmp 不计算 true

标签 c

我是一名正在制作小游戏大厅的年轻程序员,无论我做什么,if语句都不会成立,并且它会循环3次,然后继续不与循环交互。感谢所有帮助,我正在努力完成并向我的 friend 们展示。我查过 strcmp 的东西,但我仍然不知道我做错了什么。我已经为此工作了好几天,每次都从头开始,这也是我第一次使用 strcmp。

   for(i = 1; i <= 3; i++)
    {
    do{
    system("cls");
    printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
    printf("What Is Your Choice? Rock, Paper or Scissors\n");
    printf("Enter Your Answer Here: ");
    scanf("%s", choice);
    }while (strcmp(choice,Rock) != 0 && strcmp(choice,Paper) != 0 && strcmp(choice,Scissors) != 0);


    do
    {
    computer = (rand() %3) + 1;

    if(computer == 1)
    {
        system("cls");
        printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
        printf("Computer Chose Rock\n");
        char computerString[30] = "Rock";
    }

    else if(computer == 2)
    {
        system("cls");
        printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
        printf("Computer Chose Paper\n");
        char computerString[30] = "Paper";
    }

    else
    {
        system("cls");
        printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
        printf("Computer Chose scissors\n");
        char computerString[30] = "Scissors";
    }
    }while (thing != 0);


    if(strcmp(choice, computerString) == 0)
    {
        printf("It Is A Draw!\n");
        printf("Type Anything To Continue: ");
        scanf("%s", placeHolder);
    }

    else if(strcmp(choice, "Rock") == 0 && strcmp(computerString, "Scissors") == 0)
    {
        printf("Winner, Winner Chicken Dinner!\n");
        score++;
        printf("Type Anything To Continue: ");
        scanf("%s", placeHolder);
    }

    else if(strcmp(choice, "Paper") == 0 && strcmp(computerString, "Rock") == 0)
    {
        printf("Man Will Always Beat Machine! (You Win)\n");
        score++;
        printf("Type Anything To Continue: ");
        scanf("%s", placeHolder);
    }

    else if(strcmp(choice, "Scissors") == 0 && strcmp(computerString, "Paper") == 0)
    {
        printf("You Win!\n");
        score++;
        printf("Type Anything To Continue: ");
        scanf("%s", placeHolder);
    }

    else if(strcmp(choice, "Scissors") == 0 && strcmp(computerString, "Rock") == 0)
    {
        printf("Better Luck Next Time, Computer Wins!\n");
        printf("Type Anything To Continue: ");
        scanf("%s", placeHolder);
        computerScore++;
    }

    else if(strcmp(choice, "Rock") == 0 && strcmp(computerString, "Paper") == 0)
    {
        printf("Computer Beats %s\n", name);
        printf("Type Anything To Continue: ");
        scanf("%s", placeHolder);
        computerScore++;
    }

    else if(strcmp(choice, "Paper") == 0 && strcmp(computerString, "Scissors") == 0){
        printf("Computer Prevails!\n");
        printf("Type Anything To Continue: ");
        scanf("%s", placeHolder);
        computerScore++;
    }

    }

    printf("The Final Score Is %s %d and Computer %d", name, score, computerScore);

}

最佳答案

            else
            {
                system("cls");
                printf("\t\t\t\t\tZack's Miraculus MiniGames\n\n\n");
                printf("Computer Chose scissors\n");
                char computerString[30] = "Scissors";
            }
            }while (thing != 0);


            if(strcmp(choice, computerString) == 0)
            {
                printf("It Is A Draw!\n");
                printf("Type Anything To Continue: ");
                scanf("%s", placeHolder);
            }

char computerString[30] = "Scissors"; 创建一个变量,其作用域是创建它的 block 。以下 } 结束该 block ,因此该变量不再存在。在代码的更下方,当您将 computerString 传递给 strcmp 时,作用域内不存在具有该名称的变量。

要修复此问题,请在代码的前面创建 computerString,其范围包括需要访问它的所有代码。使用 strcpy 设置 computerString 的值。

您的编译器警告您,您分配了 computerString 一个值,然后让它超出范围而不使用该值。

关于C 编程 if 语句中的 strcmp 不计算 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896094/

相关文章:

c - 为什么机器代码取决于操作系统类型?

c - 是否允许对 "compatible"结构体的结构体指针进行转换和取消引用?

c - 在 C 中进行通用/类 OO 编程,同时避免符号冲突

c - 如何根据输入数量定义数组大小?

c - 什么时候可以通过 char * 相等来比较 C 字符串?

c - 通过接受字符串的 UDP api 发送嵌套结构

c - 如何将数组传递给函数而不在函数外部更改它?(数组不是全局的)

C 中的转换效果不佳

有条件的 SSE/AVX 根据比较添加或归零元素

iphone - 构建在 XCode 中运行的 C 库最终会出现不受支持的架构