c中修改文件中的指定内容
答案:2 悬赏:0 手机版
解决时间 2021-03-28 08:34
- 提问者网友:嗝是迷路的屁
- 2021-03-28 04:19
c中修改文件中的指定内容
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-03-28 04:58
char str[20],newbrand[10];
fp=fopen("goods","r+");
for(i=0;i<20;i++)//先读取全部
fscanf(fp,"%s %s %d
",goods[i].brand,goods[i].id,&goods[i].storage);
scanf("%s",str);//输入要修改的id
rewind(fp);
for(i=0;i<20;i++)
{
if(strcmp(str,id)==0)//匹配id,将brand修改为newbrand,然后写入文件
{
scanf(" %s",newbrand);
fprintf(fp,"%s %s %d
",newbrand,goods[i].id,goods[i].storage);
}
else fprintf(fp,"%s %s %d
",goods[i].brand,goods[i].id,goods[i].storage);
//其它不用修改的原样写会文件
}
fclose(fp);
fp=fopen("goods","r+");
for(i=0;i<20;i++)//先读取全部
fscanf(fp,"%s %s %d
",goods[i].brand,goods[i].id,&goods[i].storage);
scanf("%s",str);//输入要修改的id
rewind(fp);
for(i=0;i<20;i++)
{
if(strcmp(str,id)==0)//匹配id,将brand修改为newbrand,然后写入文件
{
scanf(" %s",newbrand);
fprintf(fp,"%s %s %d
",newbrand,goods[i].id,goods[i].storage);
}
else fprintf(fp,"%s %s %d
",goods[i].brand,goods[i].id,goods[i].storage);
//其它不用修改的原样写会文件
}
fclose(fp);
全部回答
- 1楼网友:摆渡翁
- 2021-03-28 05:11
#include
#include
#define MAXSIZE 200
struct item {
char brand[20];
char id[10];
int storage;
}goods[MAXSIZE];
int main() {
int n = 0;
char id[20];
struct item t;
FILE *fp = fopen("data.in","r+"); // 假定data.in是以fwrite()函数写入的
if(fp == NULL) {
printf("无法打开文件。 ");
return 1;
}
printf("待修改商品编号: ");
scanf("%s",id);
while(fread(&t,sizeof(struct item),1L,fp) == 1) {
if(strcmp(t.id,id) == 0) {
printf("%s改为: ",t.brand);
scanf("%s",t.brand);
fseek(fp,-(long)sizeof(struct item),SEEK_CUR); // 移动指针到当前记录的首部
fseek(fp,0L,SEEK_CUR); // 改换文件的读/写状态
fwrite(&t,sizeof(struct item),1L,fp); // 内容覆盖
break;
}
}
fclose(fp);
return 0;
}
#include
#define MAXSIZE 200
struct item {
char brand[20];
char id[10];
int storage;
}goods[MAXSIZE];
int main() {
int n = 0;
char id[20];
struct item t;
FILE *fp = fopen("data.in","r+"); // 假定data.in是以fwrite()函数写入的
if(fp == NULL) {
printf("无法打开文件。 ");
return 1;
}
printf("待修改商品编号: ");
scanf("%s",id);
while(fread(&t,sizeof(struct item),1L,fp) == 1) {
if(strcmp(t.id,id) == 0) {
printf("%s改为: ",t.brand);
scanf("%s",t.brand);
fseek(fp,-(long)sizeof(struct item),SEEK_CUR); // 移动指针到当前记录的首部
fseek(fp,0L,SEEK_CUR); // 改换文件的读/写状态
fwrite(&t,sizeof(struct item),1L,fp); // 内容覆盖
break;
}
}
fclose(fp);
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯