我想在“log”目录下创建一系列文件,每个文件都根据执行时间命名。在这些文件中的每一个中,我想为我的程序存储一些日志信息,比如函数原型(prototype)等。 通常我使用硬方法 fopen("log/***","a") 不是为了这个目的。我只是写一个时间戳函数:
char* timeStamp(char* txt){
char* rc;
char timestamp[16];
time_t rawtime = time(0);
tm *now = localtime(&rawtime);
if(rawtime != -1) {
strftime(timestamp,16,"%y%m%d_%H%M%S",now);
rc = strcat(txt,timestamp);
}
return(rc);
}
但我不知道下一步该做什么。请帮我解决这个问题!
最佳答案
声明一个足够大的 char
数组来容纳 16 + "log/"
(总共 20 个字符)并将其初始化为 "log/"
, 然后使用 就这样!strcat()
或相关的东西将函数返回的时间字符串添加到数组的末尾。
请注意字符串添加的工作原理:您的 char
数组是 16 个字符,这意味着您可以放入 15 个字符加上一个空字节。重要的是不要忘记这一点。如果您需要 16 个字符的字符串,则需要将其声明为 char timestamp[17]
。注意 "log/"
是一个 4 字符的字符串,所以它占用了 5 个字符(一个用于末尾的 nul 字节),但是 strcat()
会覆盖 < em>从 末尾的 nul 字节开始,所以您最终会得到正确的数字。不要将 nul 终止符计算两次,但更重要的是,不要忘记它。调试是一个更大的问题。
编辑:当我们这样做时,我误读了您的代码。我以为它只是返回一个带有时间的字符串,但它似乎将时间添加到传入的字符串中。这可能比我认为你正在做的要好。但是,如果您愿意,您可以让该函数完成所有工作 - 它在放置时间戳之前将 "log/"
放入字符串中。没那么难。
关于c++ - 如何创建以当前时间命名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425227/