リンクリストを使用して、cプログラミングで航空会社予約システムを実行しています。それは席を予約し、予約を見て、予約をキャンセルします。このプログラムは、データを追加せずに初めて正常に実行されます。リンクリストを使用した航空会社予約システム
ただし、データを追加して削除すると、ConsoleApplication1.exeの0x0FFAFBB3(ucrtbased.dll)にスローされた例外:0xC0000005:0x0004B000のアクセス違反を書き込むアクセス違反が発生します。
データを削除するには、電話番号データを比較してください。比較すると、レコードが削除されます。しかし、代わりにそれはエラーを与えている。誰でもエラー領域を特定し、提案を提供しますか?
以下は、予約の予約と削除を行うためのコードです。
void new_reservation()
{
curr = start;
if (start == NULL)
{
//Empty list
start = curr = (struct passenger *)malloc(sizeof(struct passenger));
dataentry();
curr->next = NULL;
printf("\n\t Reservation successful");
return;
}
//Reach end of list
while (curr->next)
curr = curr->next;
curr->next = (struct passenger *)malloc(sizeof(struct passenger));
curr = curr->next;
dataentry();
curr->next = NULL;
printf("\n\t Reservation successful");
printf("\n\t Saved to Reservation list");
}
void del()
{
struct passenger *temp; // assigning a temporary pointer to struct airplane
char str[20];
printf("Enter phone number:");
gets(str);
fflush(stdin);
curr = start;
while (curr)
{
if (strcmp(start->Phone, str) == 0)
{
temp = start;
start = start->next;
free(temp);
return;
}
if (strcmp(curr->next->Phone, str) == 0)
{
temp = curr->next;
curr->next = curr->next->next;
free(temp);
break;
}
else if (strcmp(curr->next->Phone, str) != 0)
{
printf("\n\n No reservations found!!");
break;
}
}
printf("\n\n Deletion successful!!");
}
[ask]を読んでください。 **決して**獲得することは決してありません。それは良い理由のためにもう標準の一部ではありません。また 'fflush(stdin);'は未定義の振る舞いですが、そのように使うことはできません。 – Olaf
'curr-> next'が' NULL'かもしれません。 – BLUEPIXY
問題の発見に役立つデバッガを使用することをお勧めします。デバッガを効果的に使うことを学ぶことは、構築する価値のある技術です。 – kaylum