我正在尝试编写一个源文件,该文件将包含文件名/目录,然后将当前日期和时间添加到文件名的末尾。到目前为止,我发现我们可以使用 time() 和 localtime() 函数。但是,我不太确定从哪里开始。
有人可以给我一些关于我可以遵循的路径的说明/步骤吗?
谢谢!:D
time()
andlocaltime()
获取当前时间strftime()
将其格式化为您想要的格式。snprintf()
将格式化时间与原始文件名结合起来。rename()
进行实际的重命名。请注意,以上所有内容都可以在一行shell
脚本中完成,因此请问问自己是否真的需要在 C 中完成,而不是将其降级为sh
.
此代码将起作用。
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]。
要获取您必须包含的日期/时间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