我正在使用C来处理算法类作业的优先级队列。优先级队列正在运行而不是问题。但是,我们必须从包含字符串/ char数组的文件中读取行,并使用优先级的数字。这是我的main
函数,可以完成所有这些:
int main() {
p_queue *q = make_queue(2);
FILE *of = fopen("sportsball2.txt", "r");
char buffer[128]; //no name is longer than this
char *part, *assign;
int x;
while(!feof(of)) {
fscanf(of, "%s\n", buffer);
if(strcmp("GO!", buffer) != 0) {
part = strtok(buffer, "/");
assign = part;
part = strtok(NULL, "/");
x = atoi(part);
insert(q, assign, x);
} else {
entr_struct *t = pop(q);
if(!t) {
printf("No players waiting to enter!");
} else {
printf("%s%s\n", t->entry, " enters the game!");
}
}
}
destroy_queue(q); //calls a custom memory free function
return EXIT_SUCCESS;
}
这一切都按预期工作除非 else
触发器,在这种情况下pop
返回队列顶部的条目具有字符串" GO&#34!; (如果buffer
分支被采用,则else
的内容)。我已经专门检查并确保正确的值 进入assign
和x
变量,所以我不知道这里发生了什么。我对C比较陌生,所以我完全有可能错过一些众所周知且显而易见的东西。