读文件出现乱码

tigercat08 2009-05-15 08:12:58
我写了一个与文件流有关的程序,但是读的时候出现乱码了
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string>
using namespace std;
#define m 18
#define max 50
struct stud
{
int id;
char name[m];
float score;
};
void input()
{
int id;
char name[m];
float score;
stud s;
cout<<"请输入学号、姓名、成绩:"<<endl;
cin>>id;
cin>>name;
cin>>score;
cout<<"正在加载数据!"<<endl;
s.id=id;
strcmp(s.name,name);
s.score=score;
ofstream ofile;
ofile.open("stud.dat",ios::out|ios::app|ios::binary);
if(!ofile)
{
cout<<"打开文件出错:"<<endl;
exit(1);
}
ofile.write((char *)&s,sizeof(s));
ofile.close();
}
void disp()
{
stud s;
ifstream ifile;
ifile.open("stud.dat",ios::in|ios::binary);
if(!ifile)
{
cout<<"打开文件出错:"<<endl;
exit(1);
}
while(ifile.peek()!=EOF)
{
ifile.read((char *)&s,sizeof(s));
cout<<"学号:"<<s.id<<" 姓名:"<<s.name<<" 成绩:"<<s.score<<endl;
}
ifile.close();
}
void change()
{
int id;
char name[m];
float score;
stud ss[max],s;
cout<<"请输入你要更该的原来的学号、姓名、成绩:"<<endl;
cin>>id>>name>>score;
fstream ifile,ofile;
ifile.open("stud.dat",ios::in);
if(!ifile)
{
cout<<"打开文件出错:"<<endl;
exit(1);
}
int i=0;
while(ifile.peek()!=EOF)
{
ifile.read((char *)&s,sizeof(s));
if(id!=s.id&&strcmp(name,s.name)!=0&&score!=s.score)
{
ss[i].id=s.id;
strcpy(ss[i].name,s.name);
ss[i].score=s.score;
}
else
{
cout<<"请输入你要更该的新的学号、姓名、成绩:"<<endl;
cin>>id>>name>>score;
ss[i].id=s.id;
strcpy(ss[i].name,s.name);
ss[i].score=s.score;
}
i++;
}
ifile.close();
ofile.open("stud.dat",ios::out|ios::trunc|ios::binary);
for(int j=0;j<i;j++)
ofile.write((char *)&ss[i],sizeof(ss[i]));
ofile.close();
}
void main()
{
int a;
cout<<"请你选择你要进行的操作:"<<endl;
cout<<"1. 输入数据。"<<endl;
cout<<"2. 修改数据。"<<endl;
cout<<"3. 查看数据。"<<endl;
cout<<"4. 退出。"<<endl;
cin>>a;
while(a!=4)
{
switch(a)
{
case 1:input();break;
case 2:change();break;
case 3:disp();break;
}
cout<<"请你选择你要进行的操作:"<<endl;
cin>>a;
}
}
...全文
96 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
pwm1987 2009-05-20
  • 打赏
  • 举报
回复
程序没错
亲手输入一遍就没问题了
程序在复制的过程中经常出现这样的问题的。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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