这是最简单的程序,但我有这个错误。我将所有信息从一个文件复制到另一个文件。 (坦率地说,我需要从几个文件中复制信息)
#include <stdio.h>
#include <string.h>
void CopyTo(FILE *x)
{
FILE *f0;
char *s=new char[100];
f0=fopen("file0.txt","wt+");
while(fgets(s,sizeof(s),x))
{
fwrite(s,1,strlen(s)+1,x);
}
fclose(f0);
};
int main()
{
FILE *fi;
fi=fopen("file1.txt","rt");
CopyTo(fi);
fclose(fi);
printf("finish");
getchar();
}
答案 0 :(得分:3)
@ a1ex07解决了当前代码的一些问题。但是,正如我在评论中所说,我认为您的代码可以通过一些更重要的更改来更有效地实现。
我相信你有以下问题:
fgets
和strlen
,面向C字符串的函数不适用于逐字节复制操作。我会这样写:
void CopyTo(FILE *x)
{
FILE *f0;
char buff[16*1024];//16kB buffer, stack allocated
size_t count;
f0=fopen("file0.txt", "wt+");
do
{
count = fread(&buff, 1, sizeof(buff), x);
if (!ferror(x))
{
fwrite(&buff, 1, count, f0);
}
} while (count == sizeof(buff));
fclose(f0);
};
请注意,此功能没有错误检查。你也没有。如果你愿意,我会留给你补充一下。另外,我只是在脑海里编译了这个。如果有任何故障,我相信你可以解决它们。
答案 1 :(得分:1)
看起来您正在尝试读取和写入同一文件(x)。不应该
fwrite(s,1,strlen(s),f0)
?
的更新强>
另外,我相信它应该是
while(fgets(s,100,x))
,因为sizeof(s)
返回的大小为(char*
)