【发布时间】:2017-09-02 02:00:01
【问题描述】:
我正在尝试将恶意文件复制到文本文件。所以基本上我希望将mal文件的内容复制到文本文件中。 mal 文件名称为 test1.mal,txt 文件名称为 output.txt。这就是我所拥有的,但它不断打印出读取文件的错误。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char content[255];
char newcontent[255];
FILE *fp1, *fp2;
fp1 = fopen("test1.mal", "r");
fp2 = fopen("output.txt", "w");
if(fp1 == NULL || fp2 == NULL)
{
printf("error reading file\n");
exit(0);
}
printf("files open correct\n");
while(fgets(content, sizeof (content), fp1) !=NULL)
{
fputs(content, stdout);
strcpy (content, newcontent);
}
printf("%s", newcontent);
printf("text received\n");
while(fgets(content, sizeof(content), fp1) !=NULL)
{
fprintf(fp2, newcontent);
}
printf("file created and text copied");
fclose(fp1);
fclose(fp2);
return 0;
}
【问题讨论】:
-
这是因为文件在当前目录中不存在(你应该尝试使用
getcwd()打印) -
if(fp1 == NULL || fp2 == NULL)你确定吗? -
使用
perror而不是printf来打印错误信息。这将告诉您为什么前面的函数调用失败。另外,对每个fopen调用分别进行错误检查,以便知道哪个失败。 -
检查这一行 ==>>
fprintf(fp2, newcontent)也。 -
如果制作
fopen的人能够提供一些方法来找出为什么它失败了。
标签: c file file-copying