У меня есть текстовый файл, который мне нужно прочитать, чтобы заполнить связанный список.Структура файла выглядит следующим образом.
Ant,Adam 10 5
Mander,Sally 4 3
King,May 6 6
King,Joe 9 6
Graph,Otto 2 5
Carr,Redd 1 3
Имя szName.Второе int - это iDepartTmUnits, а последнее int - это iTime;
Я пытаюсь прочитать входные данные из stdin. Он должен вставить события EVT_ARRIVE и EVT_DEPART в список событий симуляции.Предполагая, что вы используете fgets и sscanf, пожалуйста, убедитесь, что вы проверили счетчик, возвращенный вашим sscanf.
// Event Constants
#define EVT_ARRIVE 1 // when a person arrives
#define EVT_DEPART 2 // when a person departs the simulation
У нас есть эти структуры
typedef struct
{
char szName[16]; // Name
int iDepartTmUnits; // time units representing how long he/she stays around
} Person;
// Event typedef (aka Element)
typedef struct
{
int iEventType; // The type of event as an integer:
// EVT_ARRIVE - arrival event
// EVT_DEPART - departure event
int iTime; // The time the event will occur
Person person; // The person invokved in the event.
} Event;
// NodeLL typedef - these are the nodes in the linked list
typedef struct NodeLL
{
Event event;
struct NodeLL *pNext; // points to next node in the list
} NodeLL;
// typedefs for the ordered link list
typedef struct
{
NodeLL *pHead; // Points to the first node in the ordered list
} LinkedListImp;
typedef LinkedListImp *LinkedList;
// typedefs for the Simulation
typedef struct
{
int iClock; // clock time
LinkedList eventList; // A linked list of timed events
} SimulationImp;
typedef SimulationImp *Simulation;
Теперь, где я борюсь, это какзаполнить связанный список с этой информацией.На самом деле я изо всех сил пытаюсь понять это, поэтому мне жаль, что вопрос слишком сложный или слишком простой.
Первое, с чем я борюсь I 'я объявил это как
void generateArival (Event eventM [])
Я считаю, что это неправильно, потому что в моем основном случае я бы не пропустил это событие,Я полагаю, что передам это моделирующую реализацию.
Второе, с чем я борюсь Вот код, который у меня есть, где я слишком скопирован из файла в связанный список.
while(!feof(pFilePerson))
{
iLineCount++;
i++;
fgets(szInputBuffer, MAX_LINE_SIZE, pFilePerson);
iScanfCnt = sscanf(szInputBuffer,"%s %d %d\n",
event.person.szName,
event.iTime,
event.person.iDepartTmUnits,
);
}
Наконец
Я должен ввести EVT_ARRIVE и EVT_DEPART в список событий.Я считаю, что чтобы быть примерно таким, они с уважением относятся к int 1 и 2, поэтому мне нужно что-то вроде iEvent = event.iEventType;
и ввести это в sim->eventList
Любая помощь приветствуется, мне нужно намного большевремя с этой концепцией связанных списков, но это ломает мне голову.
РЕДАКТИРОВАТЬ
Я могу распечатать имя, но не цифры
while(fgets(szInputBuffer, sizeof szInputBuffer, pFilePerson) != NULL)
{
// print the input buffer as is (it also has a linefeed)
//printf("Person # %d: %s\n", iLineCount, szInputBuffer);
sscanf(szInputBuffer,"%s",
event.person.szName);
sscanf(szInputBuffer, "%I64d",
&event.person.iDepartTmUnits);
//linkList.event.iTime);
printf("%-7s\n", event.person.szName);
printf("%d\n", event.person.iDepartTmUnits);
}