我想获取登录c的时间戳.我写了一个函数来获取时间戳.但是当我返回变量时,我得到了不同的价值.
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char* get_timestamp(){
time_t rawtime;
struct tm * timeinfo;
char buffer[16];
time (&rawtime);
timeinfo = localtime (&rawtime);
strftime (buffer,16,"%G%m%d%H%M%S",timeinfo);
puts(buffer);
return buffer;
}
int main()
{
puts(get_timestamp());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
20130315204815
Ir?0315204815
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙...谢谢.
您正在返回指向堆栈变量的指针,因此在函数返回后无效:
char buffer[16];
Run Code Online (Sandbox Code Playgroud)
将在函数堆栈中分配.当您返回时,堆栈被清理并且buffer不再有效.只需极少的更改,这可能是一个更好的功能签名:
void get_timestamp( char *buffer, size_t buffLen )
Run Code Online (Sandbox Code Playgroud)
假设您buffer在调用前已正确分配空间get_timestamp.