在运行C语言游戏时,如果在控制台窗口输入玩家2的选择后,控制台窗口就退出了,这可能是由于 scanf 函数在读取数据时会留下输入缓冲区中的换行符导致的。由于第一个 scanf 函数读取一个整数后,会将换行符留在输入缓冲区中。然后,第二个 scanf 函数读取到该换行符并提前结束。

为了解决这个问题,您可以在每个 scanf 之前使用一个额外的空格字符来消耗掉这个换行符。这样可以确保第二个 scanf 函数正常运行。

以下是修改后的代码:

#include <stdio.h>

int main() {
    int player1, player2;
    
    printf("玩家1,请选择:\n");
    printf("1. 石头\n");
    printf("2. 剪刀\n");
    printf("3. 布\n");
    scanf("%d", &player1);
    
    // 消耗掉输入缓冲区中的换行符
    scanf(" ");
    
    printf("玩家2,请选择:\n");
    printf("1. 石头\n");
    printf("2. 剪刀\n");
    printf("3. 布\n");
    scanf("%d", &player2);
    
    switch (player1) {
        // ... 省略其余部分 ...
    }
    
    return 0;
}

通过在第一个 scanf 之后添加 scanf(" ");,我们可以在读取玩家2的选择之前消耗掉换行符。这样可以确保第二个 scanf 正常读取输入。

C语言游戏:解决控制台输入问题,让游戏流畅运行!

原文地址: https://www.cveoy.top/t/topic/SCM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录