我在C中创建了一个套接字。该程序由命令行操作并在Linux上编译。它执行以下操作:
我的问题是:
如何在fwrite()函数记录文件之前删除此HEADER。 像一个字节到字节的代码,找到一个双线" \ n \ n"。
答案 0 :(得分:3)
HTTP标头始终以\r\n\r\n
结尾。因此,您只想找到第一个字符串匹配,并将位置增加4个字节。
strstr()
函数(在string.h
中找到)就是这样做的:
char * strstr(const char *str1, const char *str2);
str2
是您在str1
中搜索的字符串。
它将内存位置返回到第一个匹配的开头。如果未找到该字符串,则返回NULL
。
因此,如果您假设缓冲区大于标题:
char *buf = getHTTPResponse(url); // Get HTTP response from URL
char *content = strstr(buf, "\r\n\r\n");
if (content != NULL) {
content += 4; // Offset by 4 bytes to start of content
}
else {
content = buf; // Didn't find end of header, write out everything
}
// Write out content to file
有关使用strstr()
的C中的完整HTTP客户端示例,请参阅here。