#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;
}
c++读写文件
最新推荐文章于 2020-02-05 12:06:37 发布