很简单。
假设你定义的结构体数组大小为MaxSize=1000,你可以定义一个当前数组中的学生数Size,
该数值随着录入的学生信息的多少而变化。
现在假设数组中有500个学生的信息,也即Size=500;你需要删除其中一个学生的资料。
通过查找好森你得到这个学生的信息存储在第100号结构中,
那么你将101号的学生的信息帆兄覆盖到100号结构中(例如:student[99]=student[100]),再将102号的学生的信息复制到101号结构中,依次复制,直到将500号结构中的学生信息复制到499号结构中。然后改写Size=499。
上面的复制过程可以通过一个for循环来实现,100号之前的结构都不用动。
这样,当前学生结态袜袭构数组中就少了原来100号结构中的学生信息,也就是删除掉了。
两种办法,一种是为被删除的结构体设置一个特殊的值瞎渣,或者是名字为空或者是学号为0等等,这种就不用对数组整体进行处理了,这种方式快,但浪费空间而且遍历的时候还要判断这个特殊的值辩型;第二种方法是删除了就要把后面的移动到前面去,会消磨灶悄耗时间,但节省空间。
在C语言里没有真正意旦仔卜义上的“清空”。
建议你定义结构的时候多定义一个成员来表示状态,平时设置成0,想删除哪个元素时只需要把这个状态设模穗置成1,在使用时检查如果状态是1就表示这个是处于删戚孝除状态的元素。
for循环呗,清空的话看你所要清空的变量是什么类型。int、double、float之类直接赋值为0,指针类型的赋值为null(一般裂核搭不建议肆拿用指针),char赋值为' '、string类型的赋值为" "很简单的。
对了,其实最好还是用单链表做吧,你这貌似是删除不是氏耐清空。