文本文件
#include <stdio.h>
int main(int argc,char *argv[])
{
if(argc!=3)
{
printf("本程序功能是复制文件,file1是目标文件,file2是被复制文件\n");
printf("fg: ./copy file1 file2\n");
}
FILE *fp1,*fp2;
if((fp2 = fopen(argv[2],"r"))==0)
{
printf("open %s failed!\n",argv[2]);
}
if((fp1 = fopen(argv[1],"w"))==0)
{
printf("open %s failed!\n",argv[1]);
}
char string[200];
while(1)
{
if(fgets(string,200,fp2)==0) break; //读取源文件
fprintf(fp1,string); //写入目标文件
}
fclose(fp1);fclose(fp2);
}
二进制文件
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
if(argc != 3)
{
printf("本程序的功能是文件复制,file1是目标文件名,file2是被复制文件\n");
printf("fg: ./copy_b file1 file2\n");
}
FILE *fp1,*fp2;
if((fp2=fopen(argv[2],"r"))==0)
{
printf("open %s failed!\n",argv[2]);
}
if((fp1=fopen(argv[1],"w"))==0)
{
printf("open %s failed!\n",argv[1]);
}
char *string = malloc(200); //申请内存
int number; //返回 读取了fp2中多少个字节,然后写入fp1中
while(1)
{
if((number = fread(string,1,200,fp2))==0) break; //读取源文件
fwrite(string,1,number,fp1); //写入目标文件
}
fclose(fp1);fclose(fp2);
free(string); //释放内存
}
二进制文件的文件写入注意事项
if((number = fread(string,1,200,fp2))==0) break; //读取源文件
fwrite(string,1,number,fp1); //写入目标文件
fread的返回值是读取了多少个字节,用number来存储,然后fwrite(string,1,number,fp1)中控制只写入number个字节,把结尾不必要的大小不应该写入
实验结果
文本文件

二进制文件也类似,因为无法用vi查看,(全是乱码),就没有必要放出来了
本文介绍了一个简单的文件复制程序,包括文本文件和二进制文件的复制实现方法。通过C语言展示了如何使用fopen、fread、fwrite等函数,并强调了在处理二进制文件时需要注意的细节。
1万+

被折叠的 条评论
为什么被折叠?



