[C语言]修改文件内容
我在test.txt文件中存入一个字符串"abcd",现在我要将'b'修改成'p',我不想全部重新写,只想修改'b'而不动其它字符.
我使用"a","a+","ab","ab+"等各种方式打开,然后使用rewind()或者是fseek()等函数,都不能达到预期的效果.
请问该如何实现呢?
[解决办法]
文件操作本来就只有读和写的概念,没有修改的概念,
要实现修改,就只能全部读出来,修改完后写回去。
[解决办法]
别用C库,用系统调用, open -> mmap -> 修改内存 -> close 。
[解决办法]
那如果要是大文件的话都读出来起不要系统瘫痪了...
[解决办法]
读出一个字符
FILE *fd;fd=fopen("test.txt","r+");fseek(fd,1,SEEK_SET);char *ch;fread(ch,sizeof(char),1,fd);
[解决办法]
fseek可以做到的,没达到效果是你自己没做好。fseek移动文件指针到b处,再用fwrite修改为p就行了。
[解决办法]
#include "stdio.h"main(){ FILE *in=fopen("f:\\test.txt","r"); FILE *out=fopen("f:\\back.txt","w"); /*out是充当临时文件作用*/ int ch=0; if(!in) { printf("cann't open test.txt\n"); exit(1); } if(!out) { printf("cann't create back.txt\n"); exit(1); } /*开始复制*/ while(!feof(in)) { ch=fgetc(in); if(ch=='a') ch='p'; fputc(ch,out); } fclose(in); fclose(out); unlink("f:\\test.txt"); /*删除test.txt*/ rename("f:\\back.txt","test.txt"); /*改名*/ printf("ok!!!!!!\n");}
[解决办法]
rename("f:\\back.txt","f:\\test.txt"); /*改名*/
[解决办法]