strftime在调用时使用错误的maxsize参数做什么

What does strftime do on call with wrong maxsize parameter?

本文关键字:maxsize 参数 什么 错误 调用 strftime      更新时间:2023-10-16

我问自己,如果用错误的maxsize参数调用strftime函数,它会做什么。下面是一个例子:

char t[19];
struct stat b;
stat(path.c_str(), &b);
strftime(t, 19, "%Y-%m-%d %H-%M-%S", localtime(&b.st_mtime));

这里的问题是时间格式的长度为19个字符。但是strftime()会在字符串末尾添加一个字符。所以当我用maxsize = 19调用strftime时,它做什么?

  1. 只需不添加字符
  2. 忽略maxsize并将20个字节写入char[]t(从而有缓冲区溢出的风险)
  3. 缩短输出字符串并添加一个字符,即"2015-10-12 11-48-1\0"

更新:我使用的是VS6编译器(Win32)

strftime

返回值

写入str指向的字符数组的字节数不包括成功时终止的"\0"如果达到计数在可以存储整个字符串之前,​0​返回,并且内容未定义