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");
在这里插入图片描述