下面注释的地方指出了你的错误:
#include
#include
using namespace std;
typedef struct abc /* 节点 */
{
char schName[40]; /* 对应校名 */
double comGrade; /* 综合分数 */
double sciGrade; /* 科研分数 */
double perGrade; /* 人才培养分数*/
double famGrade; /* 声誉分数*/
int wenli; /* 文理值 */
}abc;
void main()
{
abc school[100];
int i=0;
ifstream fin("test.txt", ios::in);
if (!fin)
{
cerr << "文件打开失败!" << endl;
exit(1);
}
if (fin.get() == EOF) cout << "当前没有信息可以读入!" << endl; //文件中除第一行以外没有信息时的处理
else
{
fin.seekg(0, ios::beg); //前面调用了fin.get(),要重新设置文件游标的位置
char c; //用于读取字符串中间的','
while (!fin.eof()){
fin.getline(school[i].schName,40,',');//getline第二个参数是指定读取长度的
fin>>school[i].comGrade>>c; //读取完数字要读取','
fin>>school[i].sciGrade>>c;
fin>>school[i].perGrade>>c;
fin>>school[i].famGrade>>c;
fin>>school[i].wenli;
fin.ignore(100,'\n');
i++;
}
}
for (int j=0; j {
printf("%s,%f,%f,%f,%f,%d\n", school[j].schName, school[j].comGrade,
school[j].sciGrade, school[j].perGrade, school[j].famGrade, school[j].wenli);
}
}
运行结果:
北京大学,100.000000,95.610000,100.000000,98.320000,2
清华大学,96.180000,100.000000,86.550000,100.000000,3
浙江大学,56.100000,53.460000,52.400000,74.860000,2
复旦大学,55.570000,53.600000,55.690000,51.540000,2
上海交通大学,42.520000,48.010000,35.590000,37.390000,2
南京大学,42.900000,40.670000,42.630000,45.360000,2
武汉大学,39.370000,41.140000,35.530000,39.410000,2
中国人民大学,36.610000,28.110000,36.520000,73.380000,2
中国科技大学,27.200000,27.870000,24.530000,30.260000,3
中山大学,33.770000,34.470000,29.600000,42.610000,2
四川大学,32.230000,33.820000,28.570000,34.110000,2
吉林大学,33.680000,32.570000,33.820000,30.430000,2
请按任意键继续. . .