C/C++语言读取文件,中文乱码
读取student.txt文件数据,根据总成绩排名,输出学生成绩。
文件内容:

#include<stdio.h>
#include<iostream>
using namespace std;
#include<algorithm>
#include<fstream>
struct stu{
char name[10];
int num;
int english;
int chinese;
int math;
int science;
}S[100];
bool cmp(stu a,stu b){
int suma=a.english+a.math+a.science+a.chinese;
int sumb=b.english+b.math+b.science+b.chinese;
return suma>sumb;
}
int main(){
fstream fp;
fp.open("E:/student.txt",ios::in);
char temp[100];
fp.getline(temp,100);//略过首行内容
int cnt=0;
while(1){//读取文件中数据到自定义结构体中
fp.getline(temp,100);
sscanf(temp,"%s %d %d %d %d %d",&S[cnt].name,&S[cnt].num,
&S[cnt].english,&S[cnt].chinese,&S[cnt].math,&S[cnt].science);
cnt++;
if(fp.eof()){
break;
}
}
sort(S,S+cnt,cmp);//排序
for(int i=0;i<cnt;i++){//输出学生成绩
printf("%s %d %d %d %d %d\n",S[i].name,S[i].num,
S[i].english,S[i].chinese,S[i].math,S[i].science);
}
fp.close();
}
输出:

解决办法:
在main()函数中添加代码system("mode con cp select=65001");
