准备工作:
- 源文件 :file_sourse
- 目的文件:file_goal
- 执行文件:file_ex.c(需要编译执行的文件 用gcc命令)
主要代码
FILE *fp,*fp1;
int cnt;
char buf[1024];
fp=fopen("file_sourse","r");
fp1=fopen("file_goal","w");
fcloseall();
while((cnt=fread(buf,1,sizeof(buf),fp)>0))
{
fwrite(buf,1,cnt,fp1);
}
若要是再从新复制一遍,在这里需要用到fseek函数
fseek(fp,0,SEEK_SET);//重新定位到文件起始处
while((cnt=fread(buf,1,sizeof(buf),fp)>0))
{
fwrite(buf,1,cnt,fp1);
}
fcloseall();
r 以读的形式打开文件,文件不存在就抛异常
r+ 以读和写的形式打开文件,文件不存在就抛异常
rs+ 以同步的读和写形式打开文件,通知操作系统忽略系统缓存(不推荐使用)
w 以写的形式打开文件,如果文件不存在就创建,存在就覆盖
wx 与w形式类似,只不过文件存在时操作会失败
w+ 以读和写的形式打开文件,如果文件不存在就创建,存在就覆盖
a 以追加的形式打开文件,如果文件不存在就创建
ax 与a类似,如果文件存在操作会失败
a+ 以读和写的形式打开文件,如果文件不存在就创建
ax+ 与a+类似,如果文件存在操作会失败
主要代码
int fd,fd1;
int cnt;
char buf[1024];
fd=open("file_sourse",O_RDONLY);
fd1=open("file_goal",O_WRONLY | O_CREAT,0644);
close(fd);
close(fd1);
while((cnt=read(fd,buf,sizeof(buf))>0))
{
write(fd,buf,cnt);
}
若要是再从新复制一遍,在这里需要用到lseek函数
lseek(fd,0,SEEK_SET);//重新定位到文件起始处
while((cnt=read(fd,buf,sizeof(buf))>0))
{
write(fd,buf,cnt);
}
close(fd);
close(fd1);
综合上述两种不同的方法进行文件复制功能,我们不难得出两种方法有相似之处,大家没必要进行死记硬背这些方法如何使用,我们通过日常的不断练习,脑海里自会有印象产生,加之利用Linux系统的man来进行帮助,会越来越熟练的理解以至会使用。
如有不足之处,请大家指出,谢谢!!!