大哥大姐叔叔阿姨帮忙看看这个文件写入的问题,很简单,可我是新手,所以不会哦
头文件
#ifndef CLNTDATA_H
#define CLNTDATA_H
struct clientData //一个结构体,记录 帐号,姓,名,帐户余额
{
long int accountNumber;
char lastName[15];
char firstName[20];
long double balance;
};
#endif
驱动文件
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include"clntdata.h"
int main()
{
ofstream outCredit("credit.dat",ios::ate); //生成一个ofstream的对象,调用
//调用构造函数创建文件credit.dat
//打开文件方式为ios::ate
cout<<"Enter account number "
<<"(1 to 100, 0 to end input\n)";
clientData client; //实例化一个结构体client
cin>>client.accountNumber; //输入第一个帐号,这时候accountNumber在内存中!!
while(client.accountNumber>0 && client.accountNumber<=100)
{
cout<<"Enter lastname, firstname, balance\n?";
cin>>client.lastName>>client.firstName>>client.balance;//在内存中!!
//定位文件中的地址。具体内部操作不清楚,是从ostream类派生来的一个函数吧
outCredit.seekp((client.accountNumber-1)*sizeof(clientData));
//往文件里面写!!!!
outCredit.write(reinterpret_cast<const char*>(&client),sizeof(clientData));
cout<<"Enter account number ";
cin>>client.accountNumber; //写新帐号以循环
}
return 0;
}
程序用函数outCredit.seekp把put文件位置指针指向文件中指定位置,然后outCredit.write函数向文件写入数据。
程序编译无错误~!
运行看起来也正常!!
可是!!!! 可是!!!!
找到clntdata.h所在目录,打开credit.dat文件(用记事本打开的),里面全是乱码!!!!!
急,在线等~!!!!! 有没有有经验的叔叔阿姨大哥大姐看看哪里出问题了?还是别的问题
PS: 这个程序是照搬原书的程序~!中文注释是我自己写的。