我正在尝试在C中实现一个非常基本的服务器,其中一部分是构建HTTP头。为此,我编写了一个名为header_builder的类,它基本上为我构造了标题。这个类最基本的方法之一是append_header_line,如下所示:
void append_header_line( const char *line, char *hdr ) {
printf("Adding header line\n");
strcat( hdr, line );
printf("Line added. Adding ending.\n");
strcat( hdr, "\r\n" );
printf("Success\n");
}
所有它应该做的是将“line”参数添加到“hdr”参数的末尾,然后将“\ r \ n”添加到它的末尾。问题是第一个strcat调用永远不会退出。当我运行此代码时,它所做的就是:
添加标题行
这意味着以下行永远不会执行,我无法弄清楚原因。有什么想法吗?
答案 0 :(得分:1)
hdr
和/或line
未正确终止,因此strcat
会一直运行,直到超出范围。
答案 1 :(得分:1)
调用函数时,hdr
和line
中的一个(或两个)可能不是以空字符结尾的C字符串。特别要注意的是,在添加第一个标题之前,您需要将hdr
初始化为hdr[0] = 0;
的空字符串。
答案 2 :(得分:0)
我猜其中一个字符串缺少它的空终止符。
答案 3 :(得分:0)
strcat在目标中需要一个空字符,它将继续用源的第一个字符替换目标的第一个字符。检查hdr是否已正确初始化。 http://www.cplusplus.com/reference/cstring/strcat/