【发布时间】:2015-04-16 18:49:11
【问题描述】:
我遇到了一个非常奇怪的问题。我的时间根本没有改变,它总是在同一时间打印日志文件。这是一个覆盖上次的函数,应该返回新的:
char * update_time(char *date)
{
time_t timer;
timer = time(&timer);
struct tm* time_real;
time_real = localtime(&timer);
date = asctime(time_real);
strftime(date, 26, "%Y.%m.%d %H:%M:%S", time_real);
return date;
}
这是我如何调用函数来获取新时间:
date = update_time(date);
在主函数中,我声明一个指向 char 的指针,如下所示:
char *date = NULL;
并在每次我需要获取新数据时调用该函数。更有趣的是,当我逐行调试程序时,我看到调试器“看到”了 char *data 的新值,但在结果文件中看不到(打印)。
这里是输出的txt文件:
2015.04.16 20:09:49:09S Program starts
2015.04.16 20:09:49:09S Opening file: a.txt
2015.04.16 20:09:49:09S New data retrieved
2015.04.16 20:09:49:09S Closing file: a.txt
2015.04.16 20:09:49:09S End of program
提前感谢您的帮助
编辑
用 Sleep(5000) 让我的程序小睡一会儿,@nos 和 @Weather Vane 是对的,这都是关于经过的时间(在我的问题的上下文中更有趣的是:D)。我们可以关闭这张票,谢谢大家的帮助。
【问题讨论】:
-
这意味着您的程序在不到 1/100 秒内完成?您能否发布一个演示错误的最小可编译程序?
-
您可能不应该覆盖您从
asctime返回的值。那条线看起来是多余的。 -
为什么将日期作为指向函数的指针传递,并从函数返回指向日期的指针?这太令人困惑了。
-
至少
date = asctime(time_real);是多余的,因为日期再次被strftime覆盖。 -
确实,尝试读取一个非常大的文件或循环遍历它。代码看起来不错。所以风向标的问题值得研究。