删除文件中的一个记录?
比如文件记录了很多学生的记录,现在想删除一个,怎样做呢?
我本来是想先全部读出来存到一个数组中,然后把要删除的那个学生的学号赋值为0
再重新写入文件里,前边加一判断:如果学号为0,则循环变量+1,比如这样写:
for(int j=0;j<MAX-1;j++)
{
if(stu[j].num==0)
j++;
fwrite(&stu[j],sizeof(struct student),1,fp)!=1;
}
但是写完再读,发现要删除的那个学生还在,并且学号是0,这是怎么回事倪?
还有其他的好办法吗?希望不吝赐教,谢!!
问题点数:20、回复次数:9Top
1 楼liuxueliuxue(peifu)回复于 2003-11-01 23:06:36 得分 0
你犯了一个非常严重的错误,循环变量在循环中附直是不可仪的。Top
2 楼liuxueliuxue(peifu)回复于 2003-11-01 23:08:56 得分 5
我也是处学,你可以考虑
if(stu[j].num==0)
continue;
fwrite(&stu[j],sizeof(struct student),1,fp)!=1;
希望不是误道
Top
3 楼liuxueliuxue(peifu)回复于 2003-11-01 23:16:10 得分 0
或着
for(int j=0;j<MAX-1;)
{
if(stu[j].num==0)
j++;
fwrite(&stu[j],sizeof(struct student),1,fp)!=1;
j++;
}
也许可以,是市看。Top
4 楼Areslp(努力ING)回复于 2003-11-01 23:29:24 得分 0
“你犯了一个非常严重的错误,循环变量在循环中附直是不可仪的”。。。。这个在vc7里是可以的。。。
你写的不是和我一样的吗?Top
5 楼liuxueliuxue(peifu)回复于 2003-11-02 10:38:39 得分 0
把,for(int j=0;j<MAX-1;)中的j++;放到语句中了,也许编译起来会有不同,。我手头上也没有调试器,而且我自学的c++,学的是c,pascal,Top
6 楼liuxueliuxue(peifu)回复于 2003-11-02 10:48:31 得分 0
我第3楼写的那样,应该可以胜任把。Top
7 楼Areslp(努力ING)回复于 2003-11-02 14:26:54 得分 0
那也是一样的吧,不过换了个写法。。。。Top
8 楼Wolf0403(废人:独活十年~心如刀割)回复于 2003-11-02 15:19:35 得分 15
呵呵,我完美废人来点卯。结了吧。Top
9 楼liuxueliuxue(peifu)回复于 2003-11-02 23:20:00 得分 0
Wolf0403(完美废人) ,欺负新人,,55555555555555555555。抢我分。Top




