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条算什么大?!
如果仅仅读写,你眉毛没动就完成了 |