前提・実現したいこと
C言語で住所録を作成しています。
単方向の線形リストで作成しています。
データを削除する関数内にエラーがでます。
NULLポインタが逆参照とはどういうことなのか教えてください。
エラーが出ているのは▼の場所です。
発生している問題・エラーメッセージ
C6011 NULLポインタ"current"を逆参照しています。
該当のソースコード
void delete(int* saveFlag)//削除 { int ret = 0,searchFlag = 0; char name_search[100] = { 0 }; data* prev; data* current = NULL; printf(delm); printf("削除するデータの名前を入力してください。\n>"); scanf_s("%s", name_search, sizeof(name_search) / sizeof(char)); while (getchar() != '\n'); /* 先頭から一致する名前を探す */ current = head; prev = NULL; if (current == NULL) { printf("データ登録がありません。\n"); } else { while (current != NULL) { ret = strcmp(name_search, current->name); if (ret == 0) { printf("%s,%s,%s\n", current->name, current->tel, current->address); printf("この情報を削除します。\n"); searchFlag++; break; } else { prev = current; current = current->next; } } if (searchFlag == 0) { printf("該当する名前のデータは見つかりませんでした。\n"); } } if (current == head) { head = current->next; free(current); } else { ▼prev->next = current->next;▼ free(current); } }
補足情報(FW/ツールのバージョンなど)
visualstudio2019
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。