-3
私のコードは、ユーザがポインタの配列から削除したい名前をタイプするようにユーザに促し、リンクされたリストを検索して名前を削除します。しかし、私のコードは、配列の最後のものを除いて、ポインタの配列内のすべての名前を削除しています。ここに私の削除機能があります。私のコードのこの部分の助けが必要です
int delete (studPtr *sPtr, Student myStud)
{
studPtr previous = NULL;
studPtr current = NULL;
studPtr temp = NULL;
while ((*sPtr)->nextPtr != NULL)
{
//previous = *sPtr;
if ((*sPtr)->name == myStud.name)
{
temp = *sPtr;
(*sPtr) = (*sPtr)->nextPtr;
current = (*sPtr);
previous->nextPtr = current;
free(temp);
}
else
{
previous = *sPtr;
(*sPtr) = (*sPtr)->nextPtr;
}
}
return 1;
}
そして、ここでポインタ
char *studentname[] = { "Abbie", "Oakley", "Sylvia", "Uwe", "Ken", "Aaron", "Fabien",'\0' };
の私の配列であり、これは関数を呼び出します。
printf("Enter students name: \n");
scanf("%s", Stud.name);
int convert_char = determineIfConvert(Stud.name);
if (convert_char == 1)
{
convert(Stud.name);
}
int delete_student = delete(&startPtr, Stud);
if (delete_student == 1)
{
printf("student deleted");
printList(startPtr);
}
else
{
printf("student not found\n");
}
コンパイラの警告を有効にし、valgrindなどを使用します。また、デバッガも便利です。 – Olaf
クリスタルボールはあなたが 'strcmp()'について知らないと言っています。 – EOF
@EOFあなたのクリスタルボールを使って私の決勝戦を見ることができますか? – Kiloreux