Как переключить вход scanf на стандартный вход терминала после считывания ввода через перенаправление ввода - PullRequest
0 голосов
/ 02 ноября 2019

Мне нужно, чтобы моя программа прочитала несколько слов из файла .txt и сохранила их в массив с помощью функции scanf (). Тем не менее, мне нужно принять пользовательский ввод после этого, также используя scanf. Как мне убедиться, что scanf принимает пользовательский ввод только после того, как все слова прочитаны?

Я попытался с помощью scanf () и getchar () принять пробел в конце файла в случае, если это то, что является scanfчтение в точке, где мне нужен ввод пользователя.

char w[15][100];
for(int i =0;i<15;i++)
{

    if(scanf("%s", &w[i][0])=1)
    {
        scanf("%s", &w[i][0]);
    }
    getchar();
    printf("Word read\n");
}
 bool validAnswer2=false;
    while(validAnswer2==false) 
    {
        printf("Would you like to play again?\nType \"y\" to play again or \"n\" to exit: ");
        scanf(" %c", &reply);
        getchar();
        if(reply=='y')
        {
            validAnswer2=true;
        }
        else if(reply=='n')
        {
            validAnswer2=true;

        }

    }

Когда программа достигает точки, в которой scanf должен принимать пользовательский ввод, а не ввод файла, я разработал ее, чтобы проверить, является ли ввод буквой, и снова попробовать scanf, если это не так. Программа бесконечно пробует scanf, каждый раз получая неверный ввод. Я перенаправляю ввод с помощью nameOfFile

...