亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: C++中關(guān)于文件輸出,要求每隔多少步就輸出一次結(jié)果,后一次結(jié)果與前一次結(jié)果并不覆蓋 [打印本頁(yè)]

作者: w8602123    時(shí)間: 2014-03-20 15:56
標(biāo)題: C++中關(guān)于文件輸出,要求每隔多少步就輸出一次結(jié)果,后一次結(jié)果與前一次結(jié)果并不覆蓋
        我寫了一個(gè)簡(jiǎn)易的代碼,來闡述我的問題:
#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]表示某個(gè)粒子A的位置,現(xiàn)在我要求每隔20步就輸出一次A的位置,結(jié)果輸出到txt文本中,但是這樣輸出來的結(jié)果,后一次都會(huì)覆蓋前一次,如果我想保留之前每一步的輸出結(jié)果,例如說,i=0時(shí),A的位置a[0]輸出到position000.txt中;當(dāng)i=20時(shí),A的位置a[1]輸出到position001.txt中;當(dāng)i=40時(shí),A的位置a[2]就輸出到position002.txt中,當(dāng)i=60時(shí),A的位置a[3]就輸出到position003.txt中;……不斷循環(huán)……;最后i=1000時(shí),A的位置a[50]就輸出到position050.txt中。我寫的這個(gè)簡(jiǎn)易程序,只能做到每隔20步輸出一次粒子A的位置,但是后一次的計(jì)算結(jié)果都會(huì)覆蓋前一次的計(jì)算結(jié)果,所以最終輸出的文本還是position.txt,內(nèi)容為a[50]=51。
作者: w_anthony    時(shí)間: 2014-03-20 16:38
本帖最后由 w_anthony 于 2014-03-20 16:41 編輯

該怎么說呢,LZ你需要拆分你所遇到的問題,比如你這個(gè)問題,你是不是想問怎樣生成position000.txt到position050.txt的文件名?而其他的信息其實(shí)都是干擾信息?
如果是這樣的話,你可以
char str[128];
sprintf(str, "position%03d.txt", j);
fp=fopen(str, "w");
------------------------------
如果你要寫到同一個(gè)文件里面也是可以的,fopen("position.txt", "a");
fprintf(fp, "%f\r\n", a[j]);
作者: 肥頭大呆腦    時(shí)間: 2014-03-20 18:21
是下面這樣嗎?
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. int main()
  4. {
  5.     int i = 0;
  6.     int j = 0;
  7.     int snapshot=20;
  8.     double a[51]={0};
  9.     char file_name[256] = {0};
  10.     FILE *fp = NULL;
  11.     for (i = 1; i <= 1000; i++)
  12.     {
  13.         if (i % snapshot == 0)
  14.         {
  15.             j = i / snapshot;
  16.             a[j] = a[j - 1] + 1;
  17.             snprintf(file_name, sizeof(file_name), "position%03d.txt", j);
  18.             fp = fopen(file_name,"w+");
  19.             if (NULL != fp)
  20.             {
  21.                 fprintf(fp, "%f\n", a[j]);
  22.                 fclose(fp);
  23.             }
  24.             else
  25.             {
  26.                 printf("open file[%s] error.", file_name);
  27.             }
  28.         }
  29.     }

  30.     return 0;
  31. }
復(fù)制代碼
又或是下面這樣?
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. int main()
  4. {
  5.     int i = 0;
  6.     int j = 0;
  7.     int snapshot=20;
  8.     double a[51]={0};
  9.     FILE *fp = fopen("position.txt", "a+");
  10.     if (NULL == fp)
  11.     {
  12.         printf("open file[%s] failed.\n", "position.txt");
  13.         return -1;
  14.     }

  15.     for (i = 1; i <= 1000; i++)
  16.     {
  17.         if (i % snapshot == 0)
  18.         {
  19.             j = i / snapshot;
  20.             a[j] = a[j - 1] + 1;
  21.             fprintf(fp, "%f\n", a[j]);
  22.         }
  23.     }

  24.     fclose(fp);
  25.     return 0;
  26. }
復(fù)制代碼

作者: w8602123    時(shí)間: 2014-03-20 20:31
回復(fù) 2# w_anthony

嗯,我要表達(dá)的就是第一句,謝謝你,你的方法很管用。{:3_193:} {:3_193:} {:3_193:}
   
作者: w8602123    時(shí)間: 2014-03-20 20:32
回復(fù) 3# 肥頭大呆腦

謝謝你的回答,應(yīng)該是第一種方法,你的辦法很慣用,同時(shí)也謝謝你給出了具體代碼,非常感謝!{:3_193:} {:3_193:} {:3_193:}
   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2