C++中关于文件的输出,要求每隔一定步数进展输出,并且输出的文件内容不能覆盖之前的内容

C++中关于文件的输出,要求每隔一定步数进行输出,并且输出的文件内容不能覆盖之前的内容
本帖最后由 u014168850 于 2014-03-20 15:51:14 编辑
        我写了一个简易的代码,来阐述我的问题:
#include "stdio.h"
#include "stdlib.h"
int main()
{
        int i=0;
        int snapshot=20;
        double a[51]={0};
        FILE *fp;
        for(i=0;i<=1000;i++)
        {
                if(i%snapshot==0)
                j=i/snapshot;
                a[j]=a[j]+1;
                fp=fopen("position.txt","r+");
                if(fp!=NULL)
                        fprintf(position,"%f",a[j]);
                fclose(fp);
        }
}
        a[50]表示某个粒子A的位置,现在我要求每隔20步就输出一次A的位置,结果输出到txt文本中,但是这样输出来的结果,后一次都会覆盖前一次,如果我想保留之前每一步的输出结果,例如说,i=0时,A的位置a[0]输出到position000.txt中;当i=20时,A的位置a[1]输出到position001.txt中;当i=40时,A的位置a[2]就输出到position002.txt中,当i=60时,A的位置a[3]就输出到position003.txt中;……如此循环……;最后i=1000时,A的位置a[50]就输出到position050.txt中。
------解决方案--------------------
int main()
{
        int i=0;
        int snapshot=20;
        double a[51]={0};
        char filename[256];
        FILE *fp;
        for(i=0;i<=1000;i++)
        {
                if(i%snapshot==0)
                j=i/snapshot;
                sprintf(filename, "position%3d.txt", j);
                a[j]=a[j]+1;
                fp=fopen(filename,"r+");
                if(fp!=NULL)
                        fprintf(filename,"%f",a[j]);
                fclose(fp);
        }
}
------解决方案--------------------
  fp=fopen("position.txt","a");
------解决方案--------------------
引用:
int main()
{
        int i=0;
        int snapshot=20;
        double a[51]={0};
        char filename[256];
        FILE *fp;
        for(i=0;i<=1000;i++)
        {
                if(i%snapshot==0)
                j=i/snapshot;
                sprintf(filename, "position%3d.txt", j);
                a[j]=a[j]+1;
                fp=fopen(filename,"r+");
                if(fp!=NULL)
                        fprintf(filename,"%f",a[j]);
                fclose(fp);
        }
}


引用:
  fp=fopen("position.txt","a");

修改fopen的打开方式就好了,搜索fopen的参数就找到了,自动往文本的最后追加。
------解决方案--------------------
引用:
int main()
{
        int i=0;
        int snapshot=20;