gpt4 book ai didi

c - 使用 strchr() 从一个主字符串创建多个字符串

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

我正在为一个类(class)编写一个 C 程序,该类(class)要求我获取请求行并将其分解为后续部分。这是出于学习目的,所以我可以期待一个相当标准的请求行。

考虑到这个问题,我打算使用某种 for() 循环遍历请求行中的每个字符,每次遇到 SP 时都会创建一个新字符串,但我想知道是否有办法使用 strchr() 指向请求行的每个“部分”?

由于请求行看起来像 method SP request-target SP HTTP-version CRLF 其中 SP 是一个空格,有什么方法可以创建一个函数使用 strchr(request-line, ' ') 创建一个 string (或 char*char[ ]) 然后在下一个 SP 结束?

编辑:

所以我可以做类似的事情

char method = strchr(request-line, ' ');

但是,“方法”不是 SP 之后的每个字符吗?我怎样才能“修剪”放入我的变量中的内容?或者我完全误解了这个功能是如何工作的?

最佳答案

从技术上讲,您可以使用 strtok,但它会就地修改请求行,这可能是可以接受的,但并非在所有情况下都可以。这是一个通用的解决方案:

char *method, *target, *version;
const char *p = request_line, *p1;

while (*p != ' ')
{
p++;
}
method = strndup(request_line, p - request_line);
p1 = ++p;
while (*p != ' ')
{
p++;
}
target = strndup(p1, p - p1);
p1 = ++p;
while (*p != '\r')
{
p++;
}
version = strndup(p1, p - p1);

正如您所期望的只有格式正确的输入,我省略了所有错误检查。

关于c - 使用 strchr() 从一个主字符串创建多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33109282/

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