代码如下:

#include 
#include 
 
int main(int argc, const char *argv[])
{
    time_t t;
    struct tm m;
    char resultbuf[8];
    int resultbuflen = sizeof(resultbuf);
    int len;
    t = time(NULL);
    localtime_r(&t, &m);
    len = strftime(resultbuf, resultbuflen, "%Y%m%d", &m);
    if(len<resultbuflen)
        printf("something wrong, result len:%d.\n\t%s.\n", len, resultbuf);
    else
        printf("now: %s.\n", resultbuf);
    return 0;
}

代码的本意是输出YYYYMMDD格式的当前日期到指定buffer中,此buffer是结构的一部分,此处代指,在buffer长度恰好等于输出结果时,执行出错.即在调用strftime时,需要保证输入的buffer长度大于预期结果至少一个字节.