C 定时输出问题,第一行为什么没有输出

代码

#include <stdio.h>
#include <windows.h>
#include <time.h>

char* GetCurrentTimeStr()
{
    time_t timep;
    struct tm *p;
    time(&timep);
    p = localtime(&timep); // 取得当地时间
    char buf[80];
    sprintf(buf, "%d-%02d-%02d %02d:%02d:%02d", (1900 + p->tm_year), (1 + p->tm_mon), p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);
    return buf;
}

// 子线程函数
DWORD WINAPI ThreadFun(LPVOID pM)
{
    int i = 0;
    for(i = 0; i < 10; i++)
    {
        char* nowStr = GetCurrentTimeStr();
        printf(nowStr);
        printf("\n");
        Sleep(1000);
    }
    return 0;
}

int main()
{
    HANDLE handle = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL);
    WaitForSingleObject(handle, INFINITE);

    return 0;
}

问题

第一行没有输出时间,为什么呢?

clipboard.png

阅读 2.8k
1 个回答

GetCurrentTimeStr函数中的buf是一个局部变量,函数返回后,就销毁了,之后用nowStr访问属于未定义行为。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题