c++读写文件

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(int argc,char* argv[])

{
	struct User
	{
		int id;		
		int age;
		char name[10];
	} ;

	User user;
	memcpy(&user,0,0);
	user.id=1;
	strcpy(user.name,"hehekkkkkk");
	user.age=21;
	cout<<"id="<<user.id<<",name="<<user.name<<",age="<<user.age<<endl;

	User *my=new User();
	my->id=2;
	strcpy(my->name,"gril");
	my->age=22;
	cout<<"id="<<my->id<<",name="<<my->name<<",age="<<my->age<<endl;
	FILE *fp=fopen("test.bat","wb");
	if(fp==NULL)
	{

		cout<<"open error"<<endl;
		return -1;
	}
	//cout<<sizeof(&user)<<endl;

	int len=strlen(user.name);
	//cout<<len<<endl;
	fwrite((int*)&len,4,1,fp);
	
	fwrite((char*)&user,sizeof(&user.id)+sizeof(&user.age)+strlen(user.name),1,fp);

	fclose(fp);
	FILE *read=fopen("test.bat","rb");
	if(read==NULL)
	{

		cout<<"open error"<<endl;
		return -1;
	}
	User myUser;
	User *puser=new User;

	int mylen;
	fseek(fp,0,0);
	fread(&mylen,4,1,fp);
	memset(puser,0,0);
	fread((int*)puser,sizeof(puser->id)+sizeof(puser->age)+mylen,1,fp);
	char *name=(char*)malloc(mylen+1);

	memcpy(name,puser->name,mylen);
	name+='\0';
	string str=name;
	str=str.substr(0,mylen);
	cout<<"id="<<puser->id<<",name="<<str.c_str()<<",age="<<puser->age<<endl;
	fclose(read);
//
	FILE *fp1=fopen("cpp.txt","w+");
	if(fp1==NULL)
	{

		printf("open error!");
		return -1;
	}
	fprintf(fp1,"%d",user.id);
	fprintf(fp1,"%s",user.name+'\0');
	fprintf(fp1,"%d",user.age);
	fclose(fp1);
	FILE *fp1_read=fopen("cpp.txt","r");
	if(fp1==NULL)
	{

		printf("open error!");
		return -1;
	}
	User cpp_user;
	fscanf(fp1_read,"%d",&cpp_user.id);
	fscanf(fp1_read,"%s",&cpp_user.name);
	fscanf(fp1_read,"%d",&cpp_user.age);
	cout<<"id="<<cpp_user.id<<",name="<<cpp_user.name<<",age="<<cpp_user.age<<endl;


	fclose(fp1_read);
	//c++读写文件

	ifstream infh;
	//
	//ofstream out;
	char* buffer;
	infh.open("d:\Android.mk",ios::in);//ios::out,ios::binary,ios::
	if(!infh)
	{

		cout<<"不能够打开文件"<<endl;
		return -1;
	}
	//infh.getline()
	//获取文件长度
	infh.seekg(0,ios::end);
	int length=infh.tellg();
	infh.seekg(0,ios::beg);
	buffer=new char[length];
	infh.read(buffer,length);
	for(int i=0;i<length;i++)
	{

		cout<<buffer[i];
	}
	cout<<endl;
	infh.clear();
	infh.close();
	delete[] buffer;
	getchar();
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值