2013-07-12 82 views
-3

我想寫一些數據到文件中。但是我有太多的數據,每個數據文件都應該根據節點的數量和每個數據文件的邊緣數量通過一定的結構進行命名。fopen函數在C +中寫入文件

例如:具有10個結點和20層的邊緣的數據,它的名稱將是s_10_20.txt 對於具有14個節點和30層的邊緣的數據,它的名稱將是s_14_30.txt 結構我以下是:s_numOfNodes_numOfEdges.txt (知道numOfNodesnumOfEdges已經從數據文件掃描)

我寫的代碼是:

FILE *fp; 
fp=fopen("s_%d_%d.txt",numOfNodes,numOfEdges,"w+"); 

這是給我下面的錯誤:

  1. 傳遞的fopen的參數2,使指針從整數沒有投
  2. 參數太多功能打開

我怎樣才能把它寫在任何其他方式?

+2

你爲什麼假設'fopen()'接受一個格式字符串,而不是?閱讀其文檔。理解字符串格式不是魔術,當你將百分號寫入字符串文字(C不是Python!)時,它不會自動發生,然後使用'snprintf()'構造適當的文件名。 – 2013-07-12 08:21:36

+0

@Dayalrai請不要在cplusplus.com。首先,因爲這是C,而不是C++,其次是因爲cplusplus.com包含嚴重錯誤和大量錯誤信息。 [Here's](http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html)'fopen()'的官方文檔。 – 2013-07-12 08:23:21

+0

ooppss接受我的道歉:( –

回答

0

sprintf功能可以幫助你。

char file_name[MAX_PATH]; 
sprintf(file_name, s_%d_%d.txt",numOfNodes, numOfEdges); 
fopen(file_name, "w+"); 
+0

你是什麼意思與MAX_PATH ...我得到一個錯誤,它是未申報的!我如何申報?謝謝! –

+0

@SabineHhalil:MAX_PATH表示文件名的最大字符數,你可以#define MAX_PATH 255左右。 – Charles0429