我正在尝试用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调用永远不会退出。当我运行这段代码时,它所做的只是说:
添加标题行
这意味着下面的代码永远不会执行,我不知道为什么。有什么想法吗?
发布于 2012-12-08 06:53:30
hdr和/或line没有正确地以零结尾,因此strcat会一直运行,直到它超出界限。
发布于 2012-12-08 06:54:27
在调用函数时,hdr和line中的一个(或两个)可能不是以nul结尾的C字符串。尤其不要忘记,在添加第一个头文件之前,需要使用hdr[0] = 0;将hdr初始化为空字符串。
发布于 2012-12-08 06:53:45
我猜有一个字符串缺少它的null结束符。
https://stackoverflow.com/questions/13772270
复制相似问题