读文件出现乱码
我写了一个与文件流有关的程序,但是读的时候出现乱码了
#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;
}
}