!怎么在文件中实时查找并改写某一项数据的值

!如何在文件中实时查找并改写某一项数据的值?
我在Solaris下编写C++程序,现在有这样的一种要求:

有文件   tempRecord.file   在程序运行时被读入,里面记录了一些需要被改变的变量的值,文件如下:

#   file   for   recording   some   variables   could   be   changed   when   service   run.

...

export   SS1=   1
export   SS2=   32250
export   NS1=   1
export   NS2=   65535
export   BS=   1
export   ZS=   255

#   file   end

其中   SS1,NS1,BS的值都会根据运行时候的情况进行改写。改写的目的是万一系统Down机,那么重新启动时可以继续接上上次停止的地方继续运行。

我的问题是怎么样来实现这个要求,因为对文件操作不是很熟练,不太Sure是不是每次写入的时候都需要查找SS1,NS1,和BS的位置?
应该怎么查找?
有没有办法避免每次都查找?
找到位置要更新的话用fflush么?还是fwrite?
还有如果一直打开文件的话,当Down机时里面修改过的东西会不会丢失呢?  

多谢各位帮忙!高分相送!

------解决方案--------------------
文本覆盖、插入、修改,简单的示例一下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp;
char *insert = "EE,EE,EE, ", tmp[256]={0};
int pos, i;

/*test.txt文件内容:01,00,00,00,0E,00,00,00,00,00,00,E1,E2,00,00,00,00*/
fp = fopen( "test.txt ", "r+ ");

/*1、等长覆盖*/
fseek(fp, 12, 1);
fprintf(fp, "0F "); /*直接写入等长度的数据就可以完成覆盖*/

/*2、E2后插入“EE,EE,EE,” */
fseek(fp, 25, 1);
pos = ftell(fp); /*插入位置*/
fgets(tmp, 256, fp); /*把后面的数据缓存*/
fseek(fp, pos, 0); /*移动到插入位置*/
fprintf(fp, insert); /*插入,就是写入数据*/
fprintf(fp, tmp); /*把原来的数据再写回来, 完成*/

/*3、01读取后++两次,并重新写回文件*/
rewind(fp);
fscanf(fp, "%x ", &i); /*读取数据*/
i = i+2; /* +2 */
fseek(fp, -2, 1); /*调整指针*/
fprintf(fp, "%02x ", i); /*写文件*/

fclose(fp);
system( "PAUSE ");
return 0;
}