之前想打开一个文本文件,读取数据,匹配正确之后,修改文本,再回写文本,操作流程如下:
myFile = fopen("xxx", "rb+");
fseek(myFile, 0L, SEEK_SET);
memset(str, 0, 256);
while (fgets(str, 256 , myFile)){
if (!strncmp(key, str, strlen(key))){
/*replace str */
/* ... */
fseek(myFile, 0, SEEK_CUR);
fputs(str, myFile);
}
memset(str, 0, 256);
}
fclose(myFile);
同时附上文本文件test.txt:
number_of_camera = 1
camera_id = 0
假设需要将number_of_camera的值修改为100,将会发现,修改之后,文本内容将变成
number_of_camera = 100
mera_id = 0
会发现,在100之后的下一行,本身为camera_id的,却变成了mera_id,少了前面的ca字符。
这个是由于文本的存放结构决定的,在打开一个文件进行修改的时候,如果是以追加的形式打开文件,可以在文本的末端增加数据,但如果是需要在文本内容中间增加一些数据,那么这些数据只能覆盖后面的字符数据了。
一句话说就是:修改文件,文件的长度已经确定了,该文件内容只能这么多,可以少,不能多,多了就会相应的覆盖原有的数据,除非你是新创建的文件或者是以追加的形式打开,在文本内容末端增加数据。
转载请注明出处!