我有一個文件,其中包含學生的姓名和成績,我想編寫一個程序,可以根據用戶選擇對他們的成績進行排序(如中期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