当我运行这个代码它运行完美,但当它再次来标签,然后没有找到5个文件后,我再次来自标签,而不是找不到所有文件
void main()
{
int i,a;
char filepath[100],filename[100];
FILE *fp;
clrscr();
label:
clrscr();
printf("Press 1:");
scanf("%d",&a);
if(a==1)
{
for(i=1;i<10;i++)
{
sprintf(filename,"%d",i);
strcat(filename,".txt");
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("File not found!!\n");
}
printf("%s\n",filename);
}
getch();
}
else
{
exit(0);
}
fclose(fp);
goto label;
}
我认为问题在于关闭文件。在for(i=1;i<10;i++)
循环中,您打开9个文件,将1.txt
文件归档到9.txt
文件。循环浏览所有文件后,您只需拨打fclose(fp);
一次。您现在关闭的文件是文件9.txt
。其他8个文件从未关闭过。
将你的循环改为这样的:
for(i=1;i<10;i++)
{
sprintf(filename,"%d",i);
strcat(filename,".txt");
fp=fopen(filename,"r");
if(fp==NULL)
{
printf("File not found!!\n");
}
else
{
printf("%s\n",filename);
fclose(fp);
}
}
现在你打开文件,当它存在时,你可以使用该文件,然后关闭文件。
你的fclose(fp);
正上方的goto label;
可以被删除