文件的操作(读、写、关闭、拷贝)

 文件的操作,读、写、关闭:

操作文件步骤 :
1、打开  fopen("路径","操作方式");
        操作方式 :
            rb:以只读打开,如果文件不存在,则打开失败
            rb+ 以读写打开,如果文件不存在,则打开失败
            wb    以只写打开,如果文件不存在,则创建,否则截断
            wb+ 以读写打开,如果文件不存在,则创建,否则截断
            ab  读写以追加打开
            ab+ 
2、操作(读注:读,写)
        fread(void* ptr, size_t size, size_t nmemb,
                     FILE *stream) 
                返回:读取的实际次数
        size_t fwrite(void* ptr, size_t size, size_t nmemb,
                     FILE *stream);
                    ptr:数据的首地址
                    size:一次写入的长度
                    nmemb:写入的次数
                    stream:文件
                返回:写入的实际次数
3、关闭
        fclose();

#include<stdio.h>

struct msg
{
	int id;
	char name[10];
};

void main()
{
//1文件操作步骤:  只写打开:
	FILE*fp =fopen("./data","wb");	
	if(NULL==fp)
	{
		printf("打开失败\n");
		return ;
	}
//2操作
	//将信息写入到文件:二进制
/*
	int a[10]={100,200,300,400,500,600,700,800,900,1000};
	int ilen=fwrite(&a,4,10,fp);//写的长度:每次写入的长度*次数
	printf("%d\n",ilen);
*/	
/*
	char buf[100]="helloworld";//[105][101][101]
	fwrite(buf,1,10,fp);	//1Byte*10次=10Byte
*/

	struct msg m={1001,"lifei"};
	fwrite(&m,1,sizeof(struct msg),fp);
	
//3关闭
	fclose(fp);
}

文件的操作:拷贝:

#include<stdio.h>
#include<errno.h>
#include<string.h>
//copy拷贝:将源文件 拷贝 目标地
//cp  源文件 目标文件
void main(int argc,char* argv[])
{
	if(argc<3)
	{
		printf("cp:缺少文件操作数\n");
		return ;
	}
//1打开文件
	FILE* rfp=fopen(argv[1],"rb");//打开文件:以只读打开
	//判断
	if(NULL==rfp)
	{
		//没有定义sys_errlist的指针数组 和errno ,在定义在errno.h中
		fprintf(stderr,"copy无法获取%s的文件状态(stat):%s\n",argv[1],strerror(errno));	
		return;
	}
	//创建目标文件:如果存在,则截断,不存在则创建	
	FILE* wfp=fopen(argv[2],"wb");//打开文件:文件不存在,则创建,否则截断
	if(NULL==wfp)
	{
		fprintf(stderr,"copy:无法创建普通文件%s:%s\n",argv[2],strerror(errno));
		return;
	}
	
//2操作文件----拷贝文件  将argv[1]的文件 拷贝给argv[2]
	int ilen=0;
	char buf[1000]="";//定义漏斗(存储从源文件中读取的内容)

	while((ilen=fread(buf,1,1000,rfp))>0)   //读取文件
	{
		//printf("%d\n",ilen);
		fwrite(buf,1,ilen,wfp);//存放时,必须存放的容量与取出来的容量一致
	}



//3关闭文件
	fclose(rfp);
	fclose(wfp);
}

猜你喜欢

转载自blog.csdn.net/weixin_42581477/article/details/81541408