После нескольких часов чтения, я думаю, я могу уточнить свой вопрос.Это вопрос, связанный с заданием, но я ищу помощь по концепции;не решение моего точного кода.Мой код включен для целей визуализации.
У меня есть следующие данные в текстовом файле, который читается в моей программе:
HIS1043.002 MH2.102 MWF 1:00-1:50pm 120 35.00
GEO1013.005 MB1.101 TR 12:30-1:45pm 5 35.00
MAT1214.003 MS1.02.03 TR 2:00-3:15pm 1 35.00
CS1713.002 NPB1.202 MWF 1:00-1:50pm 0 50.00
MAT3013.001 MS1.02.07 TR 2:00-3:15pm 1 35.00
ENG1023.001 MH2.202 MWF 10:00-10:50am 15 35.00
И вот две структуры typedef, которые я использую:
// Course Definition
typedef struct
{
StudentNode *pWaitlistHead;
char szCourseId[12];
char szRoom[15];
char szDays[15];
char szTimes[15];
int iAvailSeats;
double dFee;
} Course;
// Node for course list
typedef struct CourseNode {
struct CourseNode* pNext;
Course course;
} CourseNode;
Вот функция, которая считывает данные из файла.Внутри функции я вызываю две другие функции: одну для выделения места для узла курса и одну для добавления данных в список.
int getCourses(Course courseM[])
{
char szInputBuffer2[100];
int i = 0;
while(fgets(szInputBuffer2, 100, pFileCourses) != NULL)
{
sscanf(szInputBuffer2, "%12s %15s %8s %15s %d %lf",
courseM[i].szCourseId, courseM[i].szRoom,
courseM[i].szDays, courseM[i].szTimes,
&courseM[i].iAvailSeats, &courseM[i].dFee);
}
//allocate space for linked-list
pNew = allocateNodeC(courseM); //???
//add courses to linked list
insertN2CourseList(&pHead, &pNew);
return i;
}
Мой вопрос касается того, как обрабатывать данные описания курса в реализации списка.Нужно ли обращаться к каждому элементу отдельно в распределении?А как насчет чтения всех данных из файла?
//allocate space for CourseNode linked list
CourseNode *allocateNodeC(Course courseM[])
{
CourseNode *pNew = malloc(sizeof(CourseNode));
pNew->pNext = NULL;
pNew->course.szCourseId = courseM[i].szCourseId; //?????
pNew->course.szRoom = courseM[i].szRoom; //?????
pNew->course.szDays = courseM[i].szDays; //?????
pNew->course.szTimes = courseM[i].szTimes; //?????
pNew->course.iAvailSeats = courseM[i].iAvailSeats; //?????
pNew->course.dFee = courseM[i].dFee; //?????
return pNew;
}
//add courses to linked list
CourseNode insertN2CourseList(CourseNode **ppHead, CourseNode *ppNew)
{
CourseNode p*;
if(*ppHead == NULL)
{
*ppHead = pNew;
return;
}
for(p = *ppHead; p->pNext != NULL; p = p->pNext);
}