Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C strftime具有结束十六进制字符_C_Strftime - Fatal编程技术网

C strftime具有结束十六进制字符

C strftime具有结束十六进制字符,c,strftime,C,Strftime,我正在尝试将日期头添加到我的HTTP响应中。到目前为止,我一直在做这样的事情: char timebuf[37]; time_t now = time(0); struct tm tm = *gmtime(&now); strftime(timebuf, sizeof timebuf,"Date: %a, %d %b %Y %H:%M:%S %Z\r\n", &tm);) 但是,在检查timebuf时,有时(如服务器的第一次请求),我会收到一个\x7f结束字符 为什么不一致?我

我正在尝试将
日期
头添加到我的HTTP响应中。到目前为止,我一直在做这样的事情:

char timebuf[37];
time_t now = time(0);
struct tm tm = *gmtime(&now);
strftime(timebuf, sizeof timebuf,"Date: %a, %d %b %Y %H:%M:%S %Z\r\n", &tm);)
但是,在检查timebuf时,有时(如服务器的第一次请求),我会收到一个
\x7f
结束字符


为什么不一致?我已经仔细检查了timebuf的大小,它应该正好是37。

您向我们显示的格式字符串将导致长度为37的字符串。排除空终止符

你的数组应该有38个元素

当前,您的
timebuf
没有终止,因此您在任何地方都有未定义的行为,这些行为需要以null结尾的字符串。您有时会看到
\x7f
,有时会看到其他字符(可能有时甚至会看到
\0
),这纯粹是偶然的


发件人:

根据格式字符串
格式
,将日期和时间信息从给定的日历时间
时间
转换为以空结尾的多字节字符串
str
。最多写入
count
字节

下面是一些总数:

Substr     Length
---------+--------
"Date: "     6
"%a"         3
", "         2
"%d"         2
" "          1
"%b"         3
" "          1
"%Y"         4
" "          1
"%H"         2
":"          1
"%M"         2
":"          1
"%S"         2
" "          1
"%Z"         4
"\r\n"       2

NULL term.   1
-----------------
         =   38

37是只包含文本还是NUL终止符?谢谢!!这是一个新手的错误:)我以为稍后出现的strcpy会添加空字符。