strftime下result buffer长度不足造成的函数执行失败.
代码如下:
#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长度大于预期结果至少一个字节.