奇怪的行为 - 带字符串的C优先级队列

时间:2014-02-14 19:30:27

标签: c string file-io strtok

我正在使用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的内容)。我已经专门检查并确保正确的值 进入assignx变量,所以我不知道这里发生了什么。我对C比较陌生,所以我完全有可能错过一些众所周知且显而易见的东西。

0 个答案:

没有答案