0

我正在尝试编写一个源文件,该文件将包含文件名/目录,然后将当前日期和时间添加到文件名的末尾。到目前为止,我发现我们可以使用 time() 和 localtime() 函数。但是,我不太确定从哪里开始。

有人可以给我一些关于我可以遵循的路径的说明/步骤吗?

谢谢!:D

4

3 回答 3

2
  • 使用time()andlocaltime()获取当前时间
  • 用于strftime()将其格式化为您想要的格式。
  • 用于snprintf()将格式化时间与原始文件名结合起来。
  • 用于rename()进行实际的重命名。

请注意,以上所有内容都可以在一行shell脚本中完成,因此请问问自己是否真的需要在 C 中完成,而不是将其降级为sh.

于 2013-10-31T18:21:54.937 回答
0

此代码将起作用。

char timestr[50];
time_t now = time(NULL);
struct tm *t = localtime(&now);
strftime(timestr, sizeof(timestr)-1, "%m-%d-%Y", t);
timestr[49] = 0;
if((filename = malloc(strlen(argv[2])+strlen(timestr)+1) != NULL) {
filename[0] = '\0';
strcat(filename,argv[2];
strcat(filename,"_");
strcat(filename,timestr);
strcat(filename,".log");
}

只需根据您的代码 argc 更改 argv[2]。

于 2014-11-29T10:31:57.840 回答
0

要获取您必须包含的日期/时间time.h。然后你可以localtime像这样使用函数:

time_t t = time(NULL);
struct tm tm = *localtime(&t);

该结构tm包含所需的信息。您可以访问月份中的日期tm.tm_mday,依此类推。

您可以使用sprintf将所有日期信息写入这样的字符串:

char datum[128];
sprintf(datum, "%d-%d-%dT%d:%d:%d", tm.tm_year+1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
printf("%s\n", datum);

会给出类似的东西

2013-10-31T20:26:42

您可以通过使用将此字符串附加到您的文件名strcat

于 2013-10-31T18:33:45.853 回答