使用C库函数方式实现文件拷贝

1.1实验目的

n掌握C库函数对文件操作

n掌握C库函数的常用函数文件访问用法

1.2实验内容

n使用C库函数方式实现文件拷贝功能

1.3步骤及现象

n编写程序,从待拷贝的文件中逐步读出数据到缓冲区,在把缓冲区的数据逐个写入到新创建的文件中,完成对原文件的拷贝工作

n对应代码流程图。

n进入实验代码目录lab9,根据下图参考代码编写filecp2.c程序

$vim filecp2.c

1、编写好后如下图所示:

2、用gcc编译filecp2.c文件,输入命令:$gcc filecp2.c –o filecp2

生成可执行文件filecp2

3、运行应用程序,如下图所示,将filecp2.c文件复制为test2.c,然后用diff命令

比较两个文件的内容是否一样,一样则说明拷贝正确。

1.4关键代码分析

//功能描述:该程序用C库函数方式通过从待拷贝的文件中逐步读出数据到缓冲区,再把缓冲区的数据逐个写入到新创建的文件中,完成对原文件的拷贝

#include

#include

#include

#include

#define BUFFER_SIZE 1024

intmain(intargc,char**argv)

{

FILE*from_fd;

FILE*to_fd;

longfile_len=0;

charbuffer[BUFFER_SIZE];

//判断入口参数

if(argc!=3)

{

printf("Usage:%sfromfile

tofile\n",argv[0]);

exit(1);

}

//打开源文件

if((from_fd=fopen(argv[1],"rb"))==NULL)

{

printf("Open %s

Error\n",argv[1]);

exit(1);

}

//创建目的文件

if((to_fd=fopen(argv[2],"wb"))==NULL)

{

printf("Open %s

Error\n",argv[2]);

exit(1);

}

//测文件大小

fseek(from_fd,0L,SEEK_END);

file_len=ftell(from_fd);

fseek(from_fd,0L,SEEK_SET);

printf("form file

size is %d\n",file_len);

//文件拷贝

while(!feof(from_fd))

{

fread(buffer,BUFFER_SIZE,1,from_fd);//读文件

if(BUFFER_SIZE>=file_len)

{

fwrite(buffer,file_len,1,to_fd);

}

else

{

fwrite(buffer,BUFFER_SIZE,1,to_fd);//写文件

file_len-=BUFFER_SIZE;

}

bzero(buffer,BUFFER_SIZE);//清空buffer

}

fclose(from_fd);

fclose(to_fd);

exit(0);

}

�pQn�i�

你可能感兴趣的:(使用C库函数方式实现文件拷贝)