我现在在做一个语音信箱的项目  对每个用户都在指定目录下建立一个文件夹,同时新建一个文本文件,文本文件里面存放用户的新留言及历史留言的文件名称及数目,这样,每次操作都要涉及到对文本文件的读数据和写数据,首先文本的初始化,用char *initialization = "RecordFile1 = 0\r\nRecordFile2 = 0\r\nRecordFile3 = 0"  FILE *fp  fp = fopen("E:\\record\\record.ini","wb+");
fputs(initialization,fp);这样。然后读数据就是
char *delim=" =\r\n";  
char tmp[256]; 
char n[3][20];
char *p;
FILE *f=fopen("E:\\record\\record.ini","rt+");  
while(fgets(tmp,256,f))
{p=strtok(tmp,delim);
 if( p == NULL){}
 else if(strcmp(p,"RecordFile1") == 0)
{
  if((p = strtok(NULL,delim)) != NULL)
 {
   strcpy(n[0],p);
 }
}
}
fclose(p);
printf("%s",n[0]);
这是读取相应的项的数据,但是我在往里面更改写数据的时候遇到了麻烦,用C的文件操作fwrite,fputs好象都不能。就像我的文本内容是
RecordFile1 = hello
RecordFile2 = hey
我能读出hello和 hey,但我没有办法把他们改成
RecordFile1 = china
RecordFile2 = shenzhen
求大侠支招,小弟感激不尽!!!!!

解决方案 »

  1.   

    采用现在的文本文件操作函数据我所知不能实现。您可以:
    1、搜索第三方的辅助类。网上搜吧,我也不知道哪儿有。
    2、使用INI文件。
    3、使用一些小型数据库,比如sqlite等。
    4、每次更改时整个文件重新写一次。
      

  2.   

    有专门针对ini文件的操作的函数吗?我还试了一下WritePrivateProfileString()这个函数,功能是 在初始化文件指定小节内设置一个字串  但是这个函数不能起到覆盖原来字符串的功能 ,而且如果用这个函数,那么对我的读数据又会造成新的问题 。难道真的只能每次重写一次文件吗?郁闷~~~!!!