3 回答

TA貢獻1784條經驗 獲得超9個贊
編譯提示信息應該告訴你了啊,write的第一個參數必須是const char *型的,你要強制轉換一下
out.write((const char *)b,sizeof(A));
不過,結構中的指針成員寫入文件是沒有含義的,因為指針的值是數據在此次運行時內存中的偏移,下次再從文件中讀出來這個地址值就無效了.

TA貢獻1873條經驗 獲得超9個贊
#include<iostream>
#include<fstream>
using namespace std;
struct a
{
int data;
char name;
struct a* aptr;
};
typedef struct a A;
int main()
{
A a;
a.data=1;
a.name=2;
a.aptr=NULL;
A* b=&a;
ofstream out;
out.open("a.txt",ios::out|ios::binary);
out.write((char*)b,sizeof(A));
out.close();
//in.open("a.txt",ios::in|ios::binary);
return 0;
}
上邊這個程序編譯沒有錯誤了。
ostream& write ( const char* s , streamsize n );
這個是write的原型 第一個參數必須是指向char型的指針,第二個是大小
你傳的是指向結構體的指針 所以不對
- 3 回答
- 0 關注
- 1988 瀏覽
添加回答
舉報