如何在简单的tic tac toe输入中使用fflush(stdin)?

时间:2013-10-22 12:07:51

标签: arrays loops tic-tac-toe fflush

我是C编程的新手,我有这个任务需要我创建一个简单的井字游戏。

我设法用数组和循环创建一个空板。现在我需要获取用户的输入,并将'X'/'O'放入棋盘

以下是代码:

 #include <stdio.h>
#include <stdlib.h>

int main()
{    
    //Declare the variables
    //Create the board
        //Initialize the board with all blanks
        //Print to screen
    //Prompt user for letter 'X', 'O' or 'q' to quit

    //declare the variables
    char board[3][4], input;
    int rows, columns;

do
    {
        //create the board
        for ( rows = 0 ; rows <3 ; rows++ )
        {
            for ( columns = 0 ; columns < 4 ; columns++ )
            {
                //Initialize array to blanks (' ')
                board[rows][columns] = '|';

                //print to screen
                printf( "%c\t", board[rows][columns] );
            }
            printf("\n\n\n");
        }

        printf( "Hit X or O. 'q' to quit\n\n" );
        scanf("%c", &input);

    } while ( input != 'q' );
}//end main

任务说我可以使用这段代码fflush(stdin)清除键盘缓冲区,我显然不知道它是什么以及如何使用它:(

我对该代码进行了一些研究,它似乎取代了现有的输入和输出。如果我错了,请纠正我。

那么我如何在目前的情况下使用fflush(stdin)

萨姆

1 个答案:

答案 0 :(得分:0)

当您在这些通话之间没有使用fflush两次使用scanf时,您可能会在第二次通话时收到错误/无输入,例如因为第一个输入的输入仍然在缓冲区中。在这种情况下,scanf将返回一个空字符串。

绝对安全,你可以在每次扫描后冲洗stdin。