首页 > 解决方案 > 谁能告诉我为什么会出现此错误...?

问题描述

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

    #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 //新文件分段错误(核心转储)

标签: cfile

解决方案


段错误可能来自第一次调用fclose(fTo)whenfTo为空(文件不存在)。

有关使用空指针调用的更多讨论,请参阅此答案。fcloseFILE*


推荐阅读