C语言游戏:解决控制台输入问题,让游戏流畅运行!
在运行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 正常读取输入。
原文地址: https://www.cveoy.top/t/topic/SCM 著作权归作者所有。请勿转载和采集!