求助:c++文件操作

来源:百度知道 编辑:UC知道 时间:2024/06/23 00:56:15
我的目的是创建一个head.dat文件,写入二进制码流,然后在屏幕上输出

fstream f0("head.dat",ios::out);
if(!f0){cout<<"cant open \n";exit(0);}
int head[5]={0x0001,0x0002,0x0003,0x0004,0x0010};
f0.read((char *)head,sizeof(int)*5);
f0.close();
ifstream f1("head.dat");
if(!f1){cout<<"cant open \n";exit(0);}
int s[5];
f1.read((char *)s,sizeof(int)*5);
cout<<s;
f1.close();
return 0;
运行显示0012FE28,不知道怎么回事

你有两个严重错误
1:读写搞混了 写到文件该用write 而不是read
f0.read((char *)head,sizeof(int)*5); 错误

2:
老大 你在干嘛呢
cout<<s;什么意思 你是要输出数组的地址吗? 0012FE28是s数组的地址

你应该这样啊
for(int i=0;i<5;i++)
cout<<s[i];

最后 这里结果虽然没什么影响 但我个人认为
只要数据类型不是char 那么就可以认为是二进制文件 最好就用binary方式打开
因为文本方式就是以一个字节为单位的逐个打开 你现在的是int类型 占4个字节 所以结果并没有什么影响 但是当遇到某些数据类型时
文本方式就会忽略他的存在

比如0x51 0x65 0x00中的0x00 用文本方式就会认为他是个结束符'\0' 而二进制则不会