【发布时间】:2016-11-17 19:59:26
【问题描述】:
我正在尝试将Process-structs 添加到链接列表中。它们的定义如下。
typedef struct {
char name[2];
int duration;
int priority;
int arrival;
} Process;
typedef struct {
Process p;
struct LinklistNode* next;
} LinklistNode;
我用来创建流程的函数如下所示。
Process makeProcess(char nameIn[2], int durationIn, int priorityIn, int arrivalIn){
Process p = (Process*) malloc(sizeof(Process)); //getting an error
p->name = nameIn;
p->duration = durationIn;
p->arrival = arrivalIn;
p->priority = priorityIn;
}
我不确定我做这部分是否正确,我也不确定我应该返回一个进程还是让它无效,因为这个进程“应该”进入链接列表。
我创建链表节点的代码如下:
LinklistNode* create_linklist_node(Process pIn) {
LinklistNode* node = (LinklistNode*) malloc(sizeof(LinklistNode));
node->p = pIn;
node->next = NULL;
return node;
}
为了更多的上下文,我将在main() 中调用这些函数,在其中我已经从我正在读取的文件中标记了一个字符串。我想知道制作 Process 结构的最佳方法。现在我有这个:
while(!feof(fPointer)){
//the i counter is for the first line in the text file which I want to skip
while ((fgets(singleLine, 1500, fPointer) != NULL) && !(i == 0)){
char *token = strtok (singleLine, delimit);
while(token != NULL){
printf(" %s\n", token);
token = strtok(NULL, delimit);
}
}
i++;
}
有点长的问题,但总是感谢任何参考或附加信息。如果您有其他问题或需要更多关于我在做什么或我为什么要做某事的信息,请告诉我。或者如果你能找到类似的例子,那将不胜感激,因为到目前为止我还没有多少运气。
谢谢
【问题讨论】:
-
在
Process p = (Process*)malloc(...中,变量p是一个结构,而不是一个指针。所以它不能取malloc的返回值。 -
我没有阅读更多内容,但我看到你使用
feof,所以请阅读whyfeofis usually wrong。去while(fgets(...) != NULL) -
关于风向标所说的,你应该像这样声明
p:Process* p = (Process*) malloc(sizeof(Process));
标签: c struct linked-list token typedef