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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3145 | 回復: 4
打印 上一主題 下一主題

[C++] C++中關(guān)于文件輸出,要求每隔多少步就輸出一次結(jié)果,后一次結(jié)果與前一次結(jié)果并不覆蓋 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-03-20 15:56 |只看該作者 |倒序瀏覽
        我寫了一個簡易的代碼,來闡述我的問題:
#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的位置,現(xiàn)在我要求每隔20步就輸出一次A的位置,結(jié)果輸出到txt文本中,但是這樣輸出來的結(jié)果,后一次都會覆蓋前一次,如果我想保留之前每一步的輸出結(jié)果,例如說,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中;……不斷循環(huán)……;最后i=1000時,A的位置a[50]就輸出到position050.txt中。我寫的這個簡易程序,只能做到每隔20步輸出一次粒子A的位置,但是后一次的計算結(jié)果都會覆蓋前一次的計算結(jié)果,所以最終輸出的文本還是position.txt,內(nèi)容為a[50]=51。

論壇徽章:
9
摩羯座
日期:2013-08-15 15:18:48獅子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龍
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亞洲杯之韓國
日期:2015-03-26 10:16:442015亞冠之武里南聯(lián)
日期:2015-08-18 14:55:52
2 [報告]
發(fā)表于 2014-03-20 16:38 |只看該作者
本帖最后由 w_anthony 于 2014-03-20 16:41 編輯

該怎么說呢,LZ你需要拆分你所遇到的問題,比如你這個問題,你是不是想問怎樣生成position000.txt到position050.txt的文件名?而其他的信息其實都是干擾信息?
如果是這樣的話,你可以
char str[128];
sprintf(str, "position%03d.txt", j);
fp=fopen(str, "w");
------------------------------
如果你要寫到同一個文件里面也是可以的,fopen("position.txt", "a");
fprintf(fp, "%f\r\n", a[j]);

論壇徽章:
1
戌狗
日期:2014-03-04 13:31:12
3 [報告]
發(fā)表于 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. }
復制代碼
又或是下面這樣?
  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. }
復制代碼

論壇徽章:
0
4 [報告]
發(fā)表于 2014-03-20 20:31 |只看該作者
回復 2# w_anthony

嗯,我要表達的就是第一句,謝謝你,你的方法很管用。{:3_193:} {:3_193:} {:3_193:}
   

論壇徽章:
0
5 [報告]
發(fā)表于 2014-03-20 20:32 |只看該作者
回復 3# 肥頭大呆腦

謝謝你的回答,應(yīng)該是第一種方法,你的辦法很慣用,同時也謝謝你給出了具體代碼,非常感謝!{:3_193:} {:3_193:} {:3_193:}
   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP