gpt4 book ai didi

c - 删除 C 中的部分字符串(正则表达式?)

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:53 25 4
gpt4 key购买 nike

我有一个很长的字符串,包含这样的信息:

"GET http://www.google.se/ HTTP/1.1\r\n
Host: www.google.se\r\n
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20100101 Firefox/4.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip, deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n
Keep-Alive: 115\r\n
Proxy-Connection: keep-alive\r\n
Cookie: PREF=ID=7d6a62c557413bc8:FF=0:TM=1327968040:LM=1327968040:S=U1A51rCRDDMTF295\r\n
Cache-Control: max-age=0\r\n\r\n"

我想摆脱代理连接下的保持事件部分..这是我目前所做的:

  1. 将字符串(标题)放入函数中。
  2. 创建一个包含两个字符串( header 和主机)的结构
  3. 将 header 中的主机名放入主机部分(显然)
  4. 并将标题放在标题部分。

现在我想在将 header 放入结构的 header 部分之前摆脱 keep-alive 部分。

有什么想法吗?

这是我到目前为止所做的一些代码。我是 C 的新手,所以可能不是您见过的最漂亮的代码..

struct ParsedHeader header_parser(char * input) {
struct ParsedHeader h;
int status;
regex_t regex;
char * result_begin = NULL;

regcomp(&regex, "host:", REG_EXTENDED|REG_ICASE|REG_NOSUB);
if((status = regexec(&regex, input, (size_t) 0, NULL, 0)) == 0) {
char end = '\r';
char * header = malloc(strlen(input));

char * begin = "host:";

size_t result_size = 0;
memcpy(header, input, strlen(input));
to_lower(input, header, strlen(input));
result_begin = (strstr(header, begin) + 6);

char * result_end = strchr(result_begin, end);
result_end[0] = '\0';
//char result[strlen(result_begin)] = result_begin;
free(header);
}
regfree(&regex);

h.header = input;
h.host = result_begin;

return h;
}

最佳答案

如果我正确理解你的问题,你只想删除“Keep-Alive”字符串。这样做:

// assume buffer contains the long input string
char *pBegin;
char *pEnd;
pBegin = strstr(buffer, "Keep-Alive:");
if (pBegin)
{
pEnd = strstr(pBegin, "\r\n");
if (pEnd)
strcpy(pBegin, pEnd+2);
}

但是,如果您想要做的是从 Proxy-Connection header 中删除“keep-alive”字符串,则可以使用类似的解决方案:

char *pBegin; 
char *pEnd;
pBegin = strstr(buffer, "Proxy-Connection:");
if (pBegin)
{
pBegin = strstr(pBegin, "keep-alive");
if (pBegin)
strcpy(pBegin, pBegin+strlen("keep-alive"));
}

关于c - 删除 C 中的部分字符串(正则表达式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com