我调用的一个函数中用fopen打开一个文件,并用fprint向这个文件中写数据。
我想同时打开它把数据读出来,用到的是CFile::Open
现在使用了modeShareDenyNone可以开那个文件了,
但是读出来的只能是上次运行是写入的数据,这次的毒不出来,显示是乱码(就是那种一串
一样的一个汉字的那种)。如果我用同一个文件指针(FILE* file)可不可以在不影响,写文件的情况下
把新加入的内容读出来。
怎么做呢?

解决方案 »

  1.   

    在你要读之前要把这次写文件的指针给fclose掉。
    否则是不行的。
      

  2.   

    要同时对文件进行读写构造CFile对象时要加
    CFile::modeReadWrite
      

  3.   

    使用fopen时,用w+模式(修改原文件),或者a+模式(添加模式,可以读出添加后的文字)。建议使用w+模式打开。
    FILE* fp = fopen(file, "w+");
    fwrite(....);
    fseek(.....);
    fread(.....);
    fclose(fp);
      

  4.   

    在你没有调用fclose()之前内容是不会写到硬盘里去的
      

  5.   

    看来读不出来是因为没有fclose(),
    但是这样,我用的是别人的类库(fopen fprint都在这些类中调用的),编译成的lib,
    在我的主程序(对话框程序)中,这个文件被fopen()打开了
    就不在关上了。
    看来我同时打开,也读不出来新fprint的东东。如果我可以得到fopen返回的指针,这样的话有没有办法得到,新fprint的
    东西?
      

  6.   

    这个文件被fopen()打开了就不在关上了。那总有个关上的时候吧,否则,这个lib也写得太烂了吧。
      

  7.   

    在类的析构函数中才fclose(),所以没有办法
    我已经不报再次打开文件,然后读取的希望了。唯一的想法是用同一个指针读出。
    比如
    FILE* file=fopen(".\log.txt","a");fprint(file,"%s\n","abcd")我该如何把abcd读出来,而不影响它的继续写?很抱歉有些偏离本意,非常感谢各位的帮助。