在c中为日期和时间添加文件名

Joh*_*nyF 6 c

我正在寻找一种方法将当前日期和时间添加到我现在打开的日志文件中使用:

fopen("/var/log/SA_TEST","w");
Run Code Online (Sandbox Code Playgroud)

如何制作它

fopen("/var/log/SA_TEST_DATE_AND_TIME","w");
Run Code Online (Sandbox Code Playgroud)

很多(在c)

Ek1*_*noX 10

strftime 可用于格式化日期的时间:

#include <time.h>

char filename[40];
struct tm *timenow;

time_t now = time(NULL);
timenow = gmtime(&now);

strftime(filename, sizeof(filename), "/var/log/SA_TEST_%Y-%m-%d_%H:%M:%S", timenow);

fopen(filename,"w");
Run Code Online (Sandbox Code Playgroud)

根据strftime手册,您可以根据需要更改日期时间格式.

您可以将时间戳用作"紧凑格式",time仅显示结果.

sprintf(filename, "/var/log/SA_TEST_%d", (int)now);
Run Code Online (Sandbox Code Playgroud)


Jee*_*tel 6

/* ctime example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, time, ctime */

int main ()
{
  time_t rawtime;
  char buffer [255];

  time (&rawtime);
  sprintf(buffer,"/var/log/SA_TEST_%s",ctime(&rawtime) );
// Lets convert space to _ in

char *p = buffer;
for (; *p; ++p)
{
    if (*p == ' ')
          *p = '_';
}



  printf("%s",buffer);
  fopen(buffer,"w");

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

/var/log/SA_TEST_Wed_Jul_30_12:17:19_2014
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案看起来很复 我会使用`strftime()`作为问题的其他答案的建议. (2认同)