#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
解决 无用评论 打赏 举报
悬赏问题
- ¥15 ogg dd trandata 报错
- ¥15 高缺失率数据如何选择填充方式
- ¥50 potsgresql15备份问题
- ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
- ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
- ¥60 pb数据库修改与连接
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错