data, "User-Agent:"),"\n") - strs-6ren">
gpt4 book ai didi

c - 字符串格式在 fprintf 中有效,但在 sprintf 中不起作用,出现段错误

转载 作者:行者123 更新时间:2023-11-30 14:28:01 25 4
gpt4 key购买 nike

fprintf(fp,"IP: %d:  %.*s\n",
ip,
strstr(strstr(p->data, "User-Agent:"),"\n") - strstr(p->data, "User-Agent:"),
strstr(p->data, "User-Agent: ") );
fclose(fp);

大家好,正如您所看到的,在上面的语句中,我试图从包含整个 http 数据包数据的 char 指针中注销用户代理 header 。问题是,在摆弄字符串格式之后,我想出了这个 %.*s 格式,它可以让我动态选择要打印到文件的字符数,然后打印它们。代码基本上所做的是,首先,它打印一个 int,然后传递从“User-Agent:”出现到下一个出现的换行符的字符数,然后传递该数量的字符在“User-Agent:”开始的地方,从整个数据包数据字符串开始。我知道这一切都很困惑,但工作得很好。只是它在 sprintf 中不起作用。

请保存我所有的硬话!如有任何帮助,我们将不胜感激!

    char *stat;
sprintf(stat,"%.*s\0",
strstr(strstr(p->data, "User-Agent:"),"\n") - strstr(p->data, "User-Agent:"),
strstr(p->data, "User-Agent: ")) ;

最佳答案

您没有为stat分配内存。尝试一下

char *stat = malloc(MAXLEN);
snprintf(stat, MAXLEN, ...);
^ ^

关于c - 字符串格式在 fprintf 中有效,但在 sprintf 中不起作用,出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940383/

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