linux下c编程,关于文件偏移量的文件读写有关问题,about lseek

linux下c编程,关于文件偏移量的文件读写问题,about lseek!
各位好:
  我的目的是,在文件首部和尾部写入新的内容,
  在实现的时候,我发现在尾部写入新的内容没有问题,
  但在首部,利用lseek将文件偏移量移到首部,再写入内容,
  重复运行的话,首部却没有发生变化。
  按照想法,它应该比原来多新的内容才对。
  感觉在首部写入的内容是覆盖写入,而不是插入写入。
  这样的话,就感觉首部只写入了一次?
  管理首部和写入的程序片段如下,请大侠指点迷津。


fd1是文件1的描述符,s是一个定义好了的字符数组,

// 将fd1的偏移量设置为文件首部,在首部写入特殊字符串
if(-1==lseek(fd1,0,SEEK_SET))
  printf("Cann't Seek\n");
else
  if(FLAG) // 在测试时打开
  printf("Seek...SEEK_SET\n");

// 写入特殊字符串
if(write(fd1,s,sizeof(s))<sizeof(s))
  printf("写入特殊字符串时,已达文件末尾\n");

  如果这样实现达不到首部插入写入的话,请大侠们指点个办法,怎么才能实现首部插入写入?谢谢了

------解决方案--------------------
如果要在首部加入内容,只能另外写新文件了
------解决方案--------------------
把文件内容读到缓存中,在把添加的内容组织下
然后写到原来文件里去

------解决方案--------------------
那就把新写入的字节个数记录下来
写入前,先把之前的字节往后挪
然后再写入新字节

但实际操作不如重新写个文件
------解决方案--------------------
明确的讲,c不具备在文件内插入数据的功能.
即你的要求绝对不行.