大哥大姐叔叔阿姨帮忙看看这个文件写入的问题,很简单,可我是新手,所以不会哦

zhangdongjian 2005-10-27 01:02:24
头文件
#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: 这个程序是照搬原书的程序~!中文注释是我自己写的。
...全文
83 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ming6424 2005-10-27
  • 打赏
  • 举报
回复
outCredit.write
二进制写
用UltraEdit打开
vcmute 2005-10-27
  • 打赏
  • 举报
回复
你写的是十六进制的数据,自然看起来全是乱码了

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧