#include<stdio.h>
#include<string.h>
void delete_tea();
int main(void){
delete_tea();
return 0;
}
void delete_tea(){ // 删除教师信息(直接在文件内部操作)
FILE *fp,*ft;
char set[3];
char key[3];
int index=0;
printf("请输入要删除的教师用户名:");
scanf("%s",set);
fp=fopen("t_key.txt","rt+");
ft=fopen("temp.txt","wt");
if(fp==NULL || ft==NULL){
printf("错误!\n");
return;
}
while(fread(key,sizeof(key),1,fp)){
if(strcmp(key,set)!=0){
fwrite(key,sizeof(key),1,ft);
index++;
}
else{
rewind(fp);
fseek(fp,sizeof(key)*(index+2),0);
}
}
fclose(fp);
fclose(ft);
remove("t_key.txt");
rename("temp.txt","t_key.txt");
printf("教师信息删除成功!\n");
}C语言从txt里面删除某一段文字(代码有问题删除不了某一段文字)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
qfl_sdu 2021-07-09 10:56关注fread(key,sizeof(key),1,fp)每次读取3个字节,不包括'\0',但是strcmp(key,set)比较的时候,用'\0'作为字符串的结束符,所以每次你读取的数据进行比较的时候可能会出问题。所以key和set都需要用\0结束,申请空间的时候申请4个字节,用来存放\0,但是从文件中读取的时候,只读取3个字节。从键盘给set赋值的时候,也只能读取3个字节,第四个字节(set[3])必须设为0
解决 无用评论 打赏 举报