我有一个文本文件,需要阅读它才能填充链表。文件结构是这样的。
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事件插入模拟的eventList中。假设您正在使用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;
现在我正在努力的是如何使用此信息填充链表。 实际上,我为此付出了很多努力,所以对于这个问题过于复杂或过于简单感到抱歉。
我正在努力的第一件事 我将其声明为
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输入到eventList中。
我相信是这样的
它们分别是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);
}