程序不等待用户输入scanf(“%c”,&yn);

程序不等待用户输入scanf(“%c”,&yn);,第1张

概述这是我正在使用C语言编写的程序的基本代码.我试图检测输出文件是否已经存在,如果它确实存在,我想询问用户是否要覆盖它.这就是我首先使用fopen(outfilename,“r”)打开outfilename文件的原因;而不是fopen(outfilename,“w”);. 它检测文件不存在的情况,但是,如果它确实存在则执行printf(“输出文件已存在,覆盖(y / n):”);声明但完全忽略了sca 这是我正在使用C语言编写的程序的基本代码.我试图检测输出文件是否已经存在,如果它确实存在,我想询问用户是否要覆盖它.这就是我首先使用fopen(outfilename,“r”)打开outfilename文件的原因;而不是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;}
解决方法
printf("Please enter an output filename: ");    scanf("%s",&outfilename);

当您输入第二个字符串并按ENTER键时,字符串和字符放在输入缓冲区中,它们是:输入的字符串和换行符.字符串被scanf消耗,但换行符仍然在输入中缓冲.

进一步,

scanf("%c",&yn);

用于读取字符的下一个scanf只读取/使用换行符,因此永远不会等待用户输入.

解决方案是使用以下内容消耗额外的换行符:

scanf(" %c",&yn);      ^^^   <------------Note the space

或者使用getchar()

您可能需要查看我的答案here,以获得详细的问题解答.

总结

以上是内存溢出为你收集整理的程序不等待用户输入scanf(“%c”,&yn);全部内容,希望文章能够帮你解决程序不等待用户输入scanf(“%c”,&yn);所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存