strcat()不会退出

时间:2012-12-07 22:50:56

标签: c strcat

我正在尝试在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调用永远不会退出。当我运行此代码时,它所做的就是:

添加标题行

这意味着以下行永远不会执行,我无法弄清楚原因。有什么想法吗?

4 个答案:

答案 0 :(得分:1)

hdr和/或line未正确终止,因此strcat会一直运行,直到超出范围。

答案 1 :(得分:1)

调用函数时,hdrline中的一个(或两个)可能不是以空字符结尾的C字符串。特别要注意的是,在添加第一个标题之前,您需要将hdr初始化为hdr[0] = 0;的空字符串。

答案 2 :(得分:0)

我猜其中一个字符串缺少它的空终止符。

答案 3 :(得分:0)

strcat在目标中需要一个空字符,它将继续用源的第一个字符替换目标的第一个字符。检查hdr是否已正确初始化。 http://www.cplusplus.com/reference/cstring/strcat/