如何删除一个结构体变量的数据啊?

比如
struct book
{int num;
char name;
}bk[5];
我把bk[0],bk[1],bk[2],bk[3],bk[4]全部都赋值了。现在想把bk[4]数据删除。如何操作?

其实结构体和类有很大的相似性可在结构体内放置一个存储单元(即你现在这个结构体的数组或是vector),然后重载[]运算符,使lala[6]返回的内容是结构体中的结构体,已即你原来设计的那个结构体,然后设计一个成员函数用于,删除结构体数组中指定的元素。
memcpy(&lala[5], &lala[6], sizeof(struct student));
memset(&lala[6], 0, sizeof(struct student));
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-23
bk[4]变量包括两个数据,一个是bk[4].num,一个是bk[4].name,
bk[4].num清空:bk[4].num = 0;
bk[4].name清空:
for(int i=0;i<20;i++)
{
bk[4].name[i] = 0;
}
name是字符数组,必须一个一个清空
第2个回答  2011-09-22
正如1楼所言,或者设一些标记量,比如num为-1时为非法或空,name为”non“时为非法或空。
第3个回答  2011-09-22
bk[4].num = 0;
bk[4].name = "";
把它置为0和空不就行了?追问

不行啊。报错!

追答

把代码贴出来看看

追问

不好意思啊,刚才的结构体是这样的,一时疏忽忘记的char nam[20];
struct book
{int num;
char name[20];
}bk[5];
你看下bk[4].name如何清空?

追答

bk[4].name[0] = 0;

本回答被提问者采纳
相似回答