2013-07-12 56 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