c++ 加入小组

312个成员 1357个话题 创建时间:2012-08-15

如何用c++里的read和write函数向一个txt文件中写数据和读数据?

发表于 2012-11-25 11889 次查看

#include<iostream>

#include<fstream>

using namespace std;

struct student

{

char name;

int num;

int age;

char sex;

};

int main()

{student stud[3]={"li",1001,14,'f',"Fun",1002,19,'m',"wang",1003,21,'f'};

ofstream  outfile("d:\\stud.txt",ios::binary);

if(!outfile)

{

ceer<<"open error!"<<endl;

abort();

}

for(int i=0;i<3;i++)

outfile.write((char *)&stud[i],sizeof(stud[i]));

outfile.close();

return 0;

}

上述程序没错!但当我打开stud.txt文件时为什么里面的数据都乱了跪求高手指导,谢谢

3回复
  • 2楼 shit_adam 2013-03-21

    1. 你的student struct裏面的name是char而非char[],或者是char *用於動態申請內存。這是無法編譯的。其他編譯小錯誤自己找吧。

    2. write是用於寫二進制的,即你自己寫的ios::binary。二進制和我們平時看到的文件完全是兩回事。平時我們看到的123,實際上是字符串"123"而不是數值123。寫二進制的時候,寫的是數值123,對應的字母你可以在網上找ASCII表查找。(http://www.asciitable.com/),123正好是'{'。

    3. 如果你以文本形式寫文件,就不要使用ios::binary。有關fstream,可以查閱 (http://en.cppreference.com/w/cpp/io/basic_fstream)

  • 3楼 被遗忘者 2013-03-21

    我以前写的一个 书签,存网页的。

    http://www.cppblog.com/onion

    过两天再回复你那个read,write我也忘了,呵呵

  • 4楼 未来之星 2013-03-24

    谢谢各位

发表回复
功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。