C语言do..while循环


    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循环