当我使用goto标签再次运行代码而不退出输出时,c语言中找不到文件

问题描述 投票:-1回答:1

当我运行这个代码它运行完美,但当它再次来标签,然后没有找到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;
}

c
1个回答
0
投票

我认为问题在于关闭文件。在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;可以被删除

© www.soinside.com 2019 - 2024. All rights reserved.