この関数を正しく動作させることができません。特定のレコードを削除しようとするとクラッシュします。期待どおりに動作するためには、何を変更する必要がありますか?リンクされたリストから単一の学生を削除する
//Delete Students Function
void delete_single_Student(Student *pfirst, int id)
{
int search_id;
bool found = false;
Student *pcurrent = pfirst;
Student *temp = NULL;
printf("Please enter the student ID of the student that will be deleted.\n");
scanf("%d", &search_id);
while (search_id < 999 || search_id > 9999)
{
printf("\nPlease enter a valid id.\n");
scanf("%d", &search_id);
}
do
{
temp = pcurrent;
pcurrent = pcurrent->next;
if (pfirst->id == search_id)
{
found == true;
printf("**********************\n\n");
printf(" Student %d Deleted \n\n", search_id);
printf("*********************\n\n");
pfirst = pfirst->next;
free(temp);
break;
}
} while (found != true);
}
あなたは 'temp'で何をしていますか? 「発見された」旗には何が起こりますか? – t0mm13b
「id」とは何ですか? – melpomene
ユーザ入力に 'scanf'を使用しないでください。 – melpomene