我有一个文件,其中包含学生的姓名和成绩,我想编写一个程序,可以根据用户选择对他们的成绩进行排序(如中期1,中期2) 。我写了至于选择部分并打开文件,但我不知道如何让程序只读取文件的某些部分(例如只有Midterm 1个成绩)并仅对其进行排序。以下是我迄今为止所写的内容;使程序读取文件的某些部分
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int number;
char name[30];
char surname[30];
int midterm1,midterm2,midterm3;
} Student;
int main()
{
int choice,studentnumber,midterm1,midterm2,midterm3;
char surname;
FILE *cfPtr;
struct student *name;
name = malloc(10 * sizeof(Student));
if ((cfPtr = fopen("grades.txt", "r")) == NULL)
printf("File cannot be opened.\n");
else {
const int STUDENTSMAX = 100;
Student students[STUDENTSMAX];
int i = 0;
while (!feof(cfPtr))
{
fscanf(cfPtr, "%d%s%s%d%d%d", &students[i].number, &students[i].name,&students[i].surname, &students[i].midterm1, &students[i].midterm2, &students[i].midterm3);
printf("%4d%15s%15s%10d%10d%10d\n", students[i].number, students[i].name,students[i].surname, students[i].midterm1, students[i].midterm2, students[i].midterm3);
i++;
}
printf("What would you like to do? \n"
"1- Sort according to midterm 1\n"
"2- Sort according to midterm 2\n"
"3- Sort according to midterm 3\n"
"4- Exit\n");
scanf("%d",&choice);
while (choice != 4);{
switch (choice) {
case 1:
qsort(students,10,sizeof(int),comp);
for (i=0; i<9; i++)
printf("%4d%15s%15s%10d%10d%10d\n", students[i].number, students[i].name,students[i].surname, students[i].midterm1);
fclose(cfPtr);
}
system("PAUSE");
return 0;
}
我的问题是,我真的不知道知道如何阅读记录到一个数组我开始与第一部分; INT选择,studentnumber,midterm1,midterm2,midterm3; 焦炭名[30]; 焦姓[30]; FILE * cfPtr; 这实际上意味着是结构进入数组部分,但失败了。任何指导呢?对不起,我是一个起动器,并且是一个非常糟糕的:D。谢谢 – dawsonrose 2012-08-10 15:50:25
我已经编辑了原始帖子,感谢您的建议。我定义编辑结构部分,认为我已经获得声明局部变量作为指针部分(可能不是:D),但我真的不熟悉“malloc”函数。我已经搜遍了,是我写的对吗? – dawsonrose 2012-08-10 19:26:19
@dawsonrose:我添加了一些更多细节的“编辑2”。 – 2012-08-10 19:38:13