亚洲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
是下面這樣嗎?
#include "stdio.h"
#include "stdlib.h"
int main()
{
int i = 0;
int j = 0;
int snapshot=20;
double a[51]={0};
char file_name[256] = {0};
FILE *fp = NULL;
for (i = 1; i <= 1000; i++)
{
if (i % snapshot == 0)
{
j = i / snapshot;
a[j] = a[j - 1] + 1;
snprintf(file_name, sizeof(file_name), "position%03d.txt", j);
fp = fopen(file_name,"w+");
if (NULL != fp)
{
fprintf(fp, "%f\n", a[j]);
fclose(fp);
}
else
{
printf("open file[%s] error.", file_name);
}
}
}
return 0;
}
復(fù)制代碼
又或是下面這樣?
#include "stdio.h"
#include "stdlib.h"
int main()
{
int i = 0;
int j = 0;
int snapshot=20;
double a[51]={0};
FILE *fp = fopen("position.txt", "a+");
if (NULL == fp)
{
printf("open file[%s] failed.\n", "position.txt");
return -1;
}
for (i = 1; i <= 1000; i++)
{
if (i % snapshot == 0)
{
j = i / snapshot;
a[j] = a[j - 1] + 1;
fprintf(fp, "%f\n", a[j]);
}
}
fclose(fp);
return 0;
}
復(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