谁能告诉我为什么我会收到此错误...?

时间:2020-05-15 19:22:21

标签: c file

这里是C项目。我正在处理文本和二进制文件。这是一个从stdin读取文件,还读取新文件并将现有文件具有的信息写入新文件的项目。但是我得到一个错误。这是我的代码:

    #include <stdio.h>
    #include <stdlib.h>

    void main()
    {
        FILE *fFrom;
        FILE *fTo;
        char filename[80];
        char newfilename[80];

        printf("Enter the file you want to copy: ");
        scanf("%s", filename);

        fFrom = fopen(filename, "r");
        if(fFrom == NULL)
        {
            printf("File not found...");
            return;
        }

        printf("Enter new filename: ");
        scanf("%s", newfilename);

        fTo = fopen(newfilename, "r");
        if(fTo)
        {
            printf("File already exists...\n");
            return;
        }
        fclose(fTo);

        fTo = fopen(newfilename, "w");
        if(!fTo)
        {
            printf("Error opening file...\n");
            return;
        }

        while (!feof(fFrom))
        {
            fputc(fgetc(fFrom), fTo);
        }

        fclose(fFrom);
        fclose(fTo);

        return;
   }

然后在控制台中: 输入您要复制的文件:test.txt //现有文件 输入新文件名:new_test.txt //新文件 分段错误(核心已转储)

1 个答案:

答案 0 :(得分:0)

fclose(fTo)为空(文件不存在)时,第一次调用fTo可能导致段错误。

有关使用空fclose指针调用FILE*的更多讨论,请参见this answer