我是 C 新手,老实说,我不知道从哪里开始从结构数组中删除特定元素。
如果你愿意,你可以在这里查看和复制我的全部代码:http: //pastebin.com/Zbrm2xyL
大多数情况下,我关心函数“rmv_student”,它应该在提示用户确认后从数组“st_array”中删除具有匹配 id 号的结构,而不会弄乱该数组的其他元素。函数'rmv_student'如下:
void rmv_student(long id) // BROKEN
{
int i; // iterator
char response; // used to confirm deletion
for( i = 0; i < MAX; i++){
if ( st_array[i].id == id){
printf("Are you sure you want to delete %s %s, %d?\n", st_array[i].first_name, st_array[i].last_name, st_array[i].id);
puts("You will not be able to undo the deletion.");
puts("Enter 'y' to delete or 'n' to return to the main menu.");
response = getchar();
switch (response){
case 'y':
// delete
case 'Y':
// delete
case 'n':
main();
case 'N':
main();
default:
puts("Please enter 'y' or 'n'.");
rmv_student(id);
}
}
}
if ( i == MAX ){
printf("\nThere are no students with ID %d.\n\n", id);
main();
}
}
我有两个问题。
我的开关盒是否正确?这会正确测试用户的输入字符吗?
我该如何删除结构?
在你问之前。是的,这是家庭作业。因此,我不是在寻找讲义,只是在寻找正确方向的一点。欢迎任何其他建议。
注意:我知道我并不真正需要函数“menu_test_input”,但我现在要离开它。