我对编程很陌生,我需要一些有关如何使用C自动命名文件的建议。由于我需要在群集计算机上多次运行相同的源代码。为了防止覆盖相同的输出文件,我必须使每个输出文件具有不同的名称。
void RecordNumber()
{
srand(time(NULL));
FILE* fopen(), * fp;
char name[64];
int x, y;
long num[256];
int na = rand();
sprintf(name, "num[%d].dat", na);
if (first_num) {
first_num = 0;
fp = fopen(name, "w");
}
else
fp = fopen(name, "a");
for (x = 0; x <= species; ++x)
num[x] = 0;
for (x = 1; x <= xfield; ++x)
for (y = 1; y <= yfield; ++y)
++num[state[x][y]];
fprintf(fp, "\n%d", thetime);
for (x = 0; x < species; ++x)
fprintf(fp, "\t%d", num[x]);
fclose(fp);
}
我写了一个整数“ na”来存储一个随机数,但是该随机数未显示在文件名中(文件名仍为“ dat”)。
void RecordNumber()存储在库中。在我的代码之一中,我使用void Report(){}来调用RecordNumber(0)函数来记录模拟中的所有数字
void Report()
{
for (int j=j=thetime;j<=10000;j=j+1)
{
if (j%100==0)
{EchoTime(0);
CountSpecies(0);
RecordNumber(0);
}
else
break;
}
}
我希望文件名看起来像“ dat_%d”,我该怎么办?
答案 0 :(得分:0)
我运行了这段经过修改的代码,它运行正常,因此您代码的其他部分有可能出现故障。
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void RecordNumber()
{
srand ( time(NULL) );
FILE *fp;
char name[64];
int x,y;
long num[256];
int na=rand();
sprintf(name,"num[%d].dat",na);
fp = fopen(name,"w");
// fp = fopen(name,"a");
fclose(fp);
}
int main(){
RecordNumber();
return 0;
}
每次运行此代码时,我都会得到随机文件名,例如:
'num [1087620761] .dat'///文件名中包含单引号
'num [1518719602] .dat'