这是我正在使用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; }