|
txt文本格式: //修改name=sa,结果name=samin。 也就是说修改内容跟原内容长度一样不会出现问题,如果大于或者小于文本修改内容就会出现,这是什么原因???
char linebuff[512]={0},buff1[512]={0},buff2[512]={0};
char *key,*val;
int line_len=0,len=0,k=0,res;
if((fp = fopen("rec.txt","r+")) == NULL)
{
printf("打开文件失败!\n");
exit(1);
}
while(fgets(linebuff,512,fp))
{
line_len=strlen(linebuff);
len+=line_len;
sscanf(linebuff,"%[^=]=%[^=]",buff1,buff2);
if(strcmp(key,buff1)==0)
{
len+=k;
len-=strlen(linebuff);
res=fseek(fp,len,SEEK_SET);
if(res < 0){
perror("fseek");
break;
}
fprintf(fp,"%s=%s",key,val);
break;
}
k++;
}
rewind(fp);
|
|
| 15分 |
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。
|
|
文件量大的话这样做是不是太麻烦 |
|
|
别无他法。
|
|
| 15分 |
读
修改 写 哪怕你1个G的文件,只改一个字节,也得这样。 |
| 5分 |
这是通讯录吗?
看来得读出内容后,进行name匹配,再修改 |
| 5分 |
200条算什么大?!
如果仅仅读写,你眉毛没动就完成了 |