Программа не ожидает ввода пользователя с помощью scanf («% c», & yn);

Это основной код программы, которую я пишу для практики использования файлов на языке C. Я пытаюсь определить, существует ли выходной файл, и если он существует, я хочу спросить пользователя, хотят ли они перезаписать его или нет. По этой причине я впервые открыл файл outfilename в fopen (outfilename, "r"); в отличие от fopen (outfilename, "w");

Он обнаруживает случай, когда файл не существует, однако, если он существует, он выполняет printf («Выходной файл уже существует, перезаписать (y / n):»); оператор, но полностью игнорирует scanf ("% c", & yn); заявление!

Printf в конце программы читает «yn = 0», если файл не существует, и просто «yn =», если он существует. Кто-нибудь может мне помочь?

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

int main(void) {
    FILE *inf;
    FILE *outf;
    char filename[21],outfilename[21];
    char yn='0';

    printf("Please enter an input filename: ");
    scanf("%s",&filename);

    printf("Please enter an output filename: ");    
    scanf("%s",&outfilename);

    /* Open file for reading */
    inf=fopen (filename,"r");
    outf=fopen(outfilename,"r");

    /*check that input file exists*/
    if (inf!=NULL) {

        /*check that the output file doesn't already exist*/
        if (outf==NULL){
            fclose(outf);
            /*if it doesn't already exist create file by opening in "write" mode*/
            outf=fopen(outfilename,"w");
        } else {
            /*If the file does exist, give the option to overwrite or not*/
            printf("Output file already exists, overwrite (y/n):");
            scanf("%c",&yn);
        }
    }
    printf("\n yn=%c \n",yn);
    return 0;
}

Ответы на вопрос(5)

Ваш ответ на вопрос