在C语言下,如何在文件任意位置写入指定数据?这个问题看似很简单,其实还是有些小麻烦的。
fopen--打开  fread--读取 
fflush--缓冲区写入文件 
fseek--文件指针定位 
fwrite--写入  fclose--关闭
rewind--重置指针至文件头
可以使用以上函数组合进行文件操作,不过目前遇到的一个问题是,使用fseek找到文件指针后,想在指定位置写入特定数据(不想覆盖原有数据),不料结果却出乎预料,原有同位置数据被后写入数据覆盖。
这里可以使用一个小技巧,首先将可能被覆盖的文件取出,放在另一个文件缓冲区内。接着再写入指定数据。最后再把第一步取出的缓冲区数据写入原文件末尾。源代码如下:
#include <stdio.h>
void main()
{
  FILE* pMyfile,pFileBak;
  char list[30];
  char buf[30];
  char insert[10];
  int i,j;
  long lOffset;
  for(i=0;i<20;i++){
   
list[i]='a'+i;
  }
  for(j=0;j<10;j++){
   
insert[j]='A'+j;
  }
  lOffset=10;
  pMyfile=fopen("txt1.txt","w+");
  fwrite(list,sizeof(char),20,pMyfile);
 
  fseek(pMyfile, -lOffset,SEEK_END);
 
fread(buf,sizeof(char),lOffset,pMyfile);
 
fseek(pMyfile,-lOffset,SEEK_END);
 
fwrite(insert,sizeof(char),10,pMyfile);
 
fseek(pMyfile,0,SEEK_END);
  fwrite(buf,sizeof(char),10,pMyfile);
  fclose(pMyfile);
}
 
当然,这样的操作会浪费内存空间,目前也只是权宜之计。
							
		 
						
		加载中,请稍候......