C:用fprintf写文件的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 05:32:24
如何用fprintf在一个已有文件的字符序列中插入新的字符?(不是覆盖)
回复babybubble:
不知道您有没有试过这样在正文文件中插入字符?正是因为无法通过这样的方法实现我才来求助的,或者说可以通过某种设置将fprintf或其他函数的写入方式由覆盖变为插入?还是要像二楼说的那样?

在一个已有文件中插入新的字符并不能直接实现,不管是用fprintf还是别的什么方法。

假设在已有文件的某处需要插入内容B,设插入点之前的内容为A,插入点之后的内容(原有内容,不含待插入的)为C。这里A、B、C都代表任意长度的字符序列。

你必须这样做:
1、打开原有文件。然后创建一个新文件。
2、读出原有文件中内容A。
3、将A写入新文件。
4、将B写入新文件。
5、读出原有文件中内容C。
6、将C写入新文件。
7、关闭两个文件。
8、删除原有文件。
9、将新文件改名为原有文件。

babybubble:你那种方法只能覆盖原有内容。可别误导别人啊!

不会啊,可以在文件中插入字符串的
首先以可读可写的方式打开文件
FILE *file_pointer;
file_pointer=fopen("sample.txt","r+");
一开始指针file_pointer是在起始处
每读一个字符fscanf(file_pointer,"%c",&var_name),指针会自动向后移一个字符的位置
可以灵活移动指针的位置,用函数fseek(file_pointer, offset, origin),把文件指针从origin的位置移一个offset的长度
offset是long类型的参数,按Byte计算,即如果offset=1,则向前移动一个字节的指针位置,则与读一个字符效果是一样的
而origin的取值有三种,如下:
SEEK_SET, 值为0, 表示文件的起始位置
SEEK_END, 值为2, 表示文件的结束位置
SEEK_CUR, 值为1, 表示当前指针位置

所以,比如文件中有字符串abcd
file_pointer=fopen("sample.txt","r+");
fscanf(file_pointer,"%c",&var_name