为什么小弟我用C++写入到文本中的信息出现乱码,求高手解决
为什么我用C++写入到文本中的信息出现乱码,求高手解决
#include <iostream>
#include<fstream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
const int std_size=3;
struct student{
char name[20];
int id;
char hometown[40];
char sex[10];
int value;
};
int main()
{
student stdinfo[std_size],stdcopy[std_size];
cout<<"请输入学生的信息:"<<endl;
for(int i=0;i<std_size;i++){
cout<<"学生的姓名:";
cin>>stdinfo[i].name;
cout<<"学生的家乡:";
cin>>stdinfo[i].hometown;
cout<<"学生的id号:";
cin>>stdinfo[i].id;
cout<<"学生的性别:";
cin>>stdinfo[i].sex;
cout<<"学生的分数:";
cin>>stdinfo[i].value;
system("cls");
}
ofstream fp;
fp.open("studentinformation.txt",ios::binary|ios::app);
for(int i=0;i<std_size;i++){
fp.write((char*)&(stdinfo[i]),sizeof(stdinfo[i]));
}
fp.close();
ifstream infile("studentinformation.txt",ios::binary);
if(infile.is_open()){
cout<<"打开文件成功!"<<endl;
for(int j=0;j<std_size;j++){
infile.read((char*)&(stdcopy[j]),sizeof(stdinfo[j]));
}
}else{
cout<<"打开文件失败!"<<endl;
}
cout<<"学生的信息:"<<endl;
cout.flags(ios::left);
cout<<setw(10)<<"姓名"<<setw(10)<<"id号"<<setw(10)<<"性别"<<setw(10)<<"家乡"<<setw(10)<<"成绩"<<endl;
for(int k=0;k<std_size;k++){
cout<<setw(10)<<stdcopy[k].name<<setw(10)<<stdcopy[k].id<<setw(10)<<stdcopy[k].sex<<setw(10)<<stdcopy[k].hometown<<setw(10)<<stdcopy[k].value<<endl;
}
infile.close();
}
------解决方案--------------------
int main()
{
student stdinfo[std_size],stdcopy[std_size];
cout<<"请输入学生的信息:"<<endl;
for(int i=0;i<std_size;i++){
memset(stdinfo, 0, sizeof(stdinfo[i]));
------解决方案--------------------
int main()
{
student stdinfo[std_size],stdcopy[std_size];
cout<<"请输入学生的信息:"<<endl;
for(int i=0;i<std_size;i++){
memset(&stdinfo[i], 0, sizeof(stdinfo[i]));
#include <iostream>
#include<fstream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
const int std_size=3;
struct student{
char name[20];
int id;
char hometown[40];
char sex[10];
int value;
};
int main()
{
student stdinfo[std_size],stdcopy[std_size];
cout<<"请输入学生的信息:"<<endl;
for(int i=0;i<std_size;i++){
cout<<"学生的姓名:";
cin>>stdinfo[i].name;
cout<<"学生的家乡:";
cin>>stdinfo[i].hometown;
cout<<"学生的id号:";
cin>>stdinfo[i].id;
cout<<"学生的性别:";
cin>>stdinfo[i].sex;
cout<<"学生的分数:";
cin>>stdinfo[i].value;
system("cls");
}
ofstream fp;
fp.open("studentinformation.txt",ios::binary|ios::app);
for(int i=0;i<std_size;i++){
fp.write((char*)&(stdinfo[i]),sizeof(stdinfo[i]));
}
fp.close();
ifstream infile("studentinformation.txt",ios::binary);
if(infile.is_open()){
cout<<"打开文件成功!"<<endl;
for(int j=0;j<std_size;j++){
infile.read((char*)&(stdcopy[j]),sizeof(stdinfo[j]));
}
}else{
cout<<"打开文件失败!"<<endl;
}
cout<<"学生的信息:"<<endl;
cout.flags(ios::left);
cout<<setw(10)<<"姓名"<<setw(10)<<"id号"<<setw(10)<<"性别"<<setw(10)<<"家乡"<<setw(10)<<"成绩"<<endl;
for(int k=0;k<std_size;k++){
cout<<setw(10)<<stdcopy[k].name<<setw(10)<<stdcopy[k].id<<setw(10)<<stdcopy[k].sex<<setw(10)<<stdcopy[k].hometown<<setw(10)<<stdcopy[k].value<<endl;
}
infile.close();
}
------解决方案--------------------
int main()
{
student stdinfo[std_size],stdcopy[std_size];
cout<<"请输入学生的信息:"<<endl;
for(int i=0;i<std_size;i++){
memset(stdinfo, 0, sizeof(stdinfo[i]));
------解决方案--------------------
int main()
{
student stdinfo[std_size],stdcopy[std_size];
cout<<"请输入学生的信息:"<<endl;
for(int i=0;i<std_size;i++){
memset(&stdinfo[i], 0, sizeof(stdinfo[i]));