库函数方式文件编程

1.核心理论

库函数:基于c函数库的文件编程是独立于具体的操作系统平台的,不管是在windows下还是linux下,都是使用这些函数,使用库函数进行程序设计可提高程序的可移植性。

:对于标准的c函数库,它们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存或者网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的的流,这时候你就可以想象数据好像在其中“流”动一样。

文件指针:在系统调用方式实现文件访问中,使用文件描述符来指向一个文件。在库函数方式的文件访问中,使用FILE类型来表示一个打开的文件,这个类型中包含了管理文件流的信息。而指向该类型的指针FILE*则被称之为文件指针。

2.函数学习

打开文件
函数名:fopen
函数原型:FILE *fopen(const char *path, const char *mode);
函数功能:打开文件
头文件:<stdio.h>
返回值:成功:文件指针,  失败:NULL
参数说明:path:含路径的文件名    mode:文件打开模式

关闭文件
函数名:fclose
函数原型:int fclose(FILE *fp);
函数功能:关闭文件
头文件: <stdio.h>
返回值:成功:0   失败:EOF
参数说明:fp:文件指针

读文件
函数名:fread
函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *steam);
函数功能:从文件中读取数据
头文件: <stdio.h>
返回值:成功:读取到的数据量   失败:0
参数说明:stream:指向要读取的文件  ptr:指向要保存的位置    memb:读取的数据块数   size:每块数据的大小

写文件
函数名:fwrite
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
函数功能:向文件中写入数据
头文件:<stdio.h>
返回值:成功:返回成功写入数据量    失败:0
参数说明:stream:要写入数据的文件指针   ptr:存放要写入文件的数据    nmemb:要写入的数据块数    size:每块数据的大小   

文件分定位
函数名:fseek
函数原型:int fseek(FILE *stream, long offset, int whence);
函数功能:重新定位文件
头文件: <stdio.h>
返回值:成功:0  失败:-1
参数说明:stream:文件指针  offset:文件偏移  whence:从哪个地方开始偏移

3.综合实例

/******************************************************************
 * 程序名:filecp.c
 * 功能:文件复制
 ******************************************************************/

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	FILE *fp_src, *fp_des;
	int num;
	char buff[128];

	if(argc != 3)
	{
		printf("the format must be:cp file_src file_des\n");
		exit(EXIT_FAILURE);
	}
	if((fp_src=fopen(argv[1],"r"))==NULL)
	{
		perror("fopen");
		exit(EXIT_FAILURE);
	}
	if((fp_des=fopen(argv[2],"w"))==NULL)
	{
		perror("fopen");
		exit(EXIT_FAILURE);
	}
	while((num=fread(buff,1,128,fp_src))>0)
	{
		fwrite(buff,1,num,fp_des);
	}
	fclose(fp_src);
	fclose(fp_des);

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值