do
{
scanf("%c", &option);
if (option == 'Y')
game_interface(ch, row, train);
else if (option == 'N')
break;
else
printf("请重新输入:>");
} while (option != 'Y');
//为什么请重新输入这个段话会打印两次
例如:
*********************************
(Y)开始游戏 (N)退出
*********************************
请选择:>
Z
请重新输入:>请重新输入:>
因为scanf("%c",&option)会自动接收前一次输入数据后的换行符
因此你需要在scanf("%c",&option)之后加一句getchar(),接收到输入option后的换行符
一次是Z,一次是回车.一共执行了2次循环,所以打印了2次
scanf("%c",&option);等待输入时,输入了Z和回车,两个字符,Z执行else重新输入,然后到scanf("%c",&option);会读取回车字符,在执行else,输出“重新输入”
建议你看下这篇博客【明解C语言】之do... while循环