这是我写的一个用于练习在C语言中使用文件的基本程序代码。我试图检测输出文件是否已经存在,如果存在,我想要询问用户是否要覆盖它。这就是为什么我首先使用fopen(outfilename,"r");打开outfilename文件,而不是使用fopen(outfilename,"w");。
它可以检测文件不存在的情况,但如果文件存在,则会执行printf("Output file already exists, overwrite (y/n):");语句,但完全忽略scanf("%c",&yn);语句!
程序末尾的printf读取"yn=0",如果文件不存在,只读取"yn=",如果文件存在。有人能帮我吗?
它可以检测文件不存在的情况,但如果文件存在,则会执行printf("Output file already exists, overwrite (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;
}
outf == NULL
,不要执行fclose(outf)
。你不能关闭一开始就打开失败的文件。 - Staven