Эта функция дает моей программе дамп памяти, и я не могу понять, почему - PullRequest
0 голосов
/ 03 ноября 2019

Мои другие функции работают нормально, но как только я вызываю функции readfile, у меня появляется код выхода / дамп ядра. Temp - указатель, указывающий на двойной указатель (сам связанный список). У меня ощущение, что ошибка где-то в первых 6 строках, потому что я уверен, что все остальное правильно.

Я пытался изменить свою стратегию в temp-> next и как я перемещаю указатель по списку, но, похоже, ничего не работает

while ( !feof(fp) && return_val == 0 ){
            if ( temp != NULL ){
                temp = malloc(sizeof(struct record));
                temp->next = next;
                next->next = NULL;
                temp = temp->next;
            }
            fscanf(fp, "%*s %*s %d",&temp->accountno);
            track = 0;
            while ( track == 0 ){
                ch = fgetc(fp);
                if ( ch == '<'){
                    ch = fgetc(fp);
                    while ( ch != '>' ){
                        temp->name[ni] = ch;
                        ch = fgetc(fp);
                        ni++;
                    }
                    temp->name[ni] = '\0';
                } else if ( ch == '['){
                        ch = fgetc(fp);
                        while ( ch != ']' ){
                            temp->address[ai] = ch;
                            ch = fgetc(fp);
                            ai++;
                        }
                        temp->address[ai] = '\0';
                        track = 1;
                }
            }
            ni = 0;
            ai = 0;
        }

Я ожидаю, что программа простоПри чтении файла функция получает двойной указатель и строковый массив (имя файла), и она должна считывать из файла номер счета, имя и адрес и сохранять его в связанном списке.

...