有没有一种方法可以在C中自动命名输出dat文件?

问题描述

我对编程很陌生,我需要一些有关如何使用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”,我该怎么办?

解决方法

我运行了这段经过修改的代码,它运行正常,因此您代码的其他部分有可能出现故障。

#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'

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...