从链表(C)打印值的Segfault

时间:2015-02-19 21:35:41

标签: c loops fault

fpI我不知道为什么会出现故障,我正确地关闭文件,我保持在我的循环的链表中,然而当它到达for循环或while fgets循环(两个中的一个)时seg故障。我有一个非常相似的功能,完美的工作,我修改了它,但它不会产生相同的输出

static int wordMode(struct node *head, char* word)
{
    struct node *ptr;
    int count = 0;
    char* filecheck;
    char* tester;
    ptr = head;

    //print the lines
    for (ptr = head; ptr != NULL; ptr = ptr->next){
        if ( strcmp(ptr->fileName, filecheck) != 0 ) {
            filecheck = ptr->fileName;
            printf("=====================%s\n", filecheck);

            //if new file, open it and start printing
             FILE *fp = fopen(ptr->fileName, "r");
                char line [ 1024 ]; /* or other suitable maximum line size */
                int counter = 1;
                while ( fgets ( line, sizeof line, fp ) != NULL ) /* read a line */{
                     //check if the line number is in the linked list, if so add match
                     printf(" %d: %s", counter, line); /* write the line */
                     counter++;
                  }
                  fclose ( fp );
        } 
        else{
            continue;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

指向File *file的指针不称为fp。这是文件。 fclose(fp)也应该是fclose(file)

答案 1 :(得分:2)

变量filecheck尚未初始化。

char* filecheck;
....

    if ( strcmp(ptr->fileName, filecheck) != 0 ) {

需要将其设置为某种东西。

char* filecheck = "";