这里是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 //新文件 分段错误(核心已转储)
答案 0 :(得分:0)
当fclose(fTo)
为空(文件不存在)时,第一次调用fTo
可能导致段错误。
有关使用空fclose
指针调用FILE*
的更多讨论,请参见this answer。