gpt4 book ai didi

c - 相同的字符串。一个人行为不端

转载 作者:行者123 更新时间:2023-11-30 19:57:29 25 4
gpt4 key购买 nike

v 从标准输入读取
v2 不是,但它们是相同的。

char *v;
v = (char *) malloc(1);
fread(v,i,1,stdin);
printf("%s",v);

打印:

a=aaa&b=ooo%3C%2Ftest%3Eooo

v2v

相同
char *v2 = "a=aaa&b=ooo%3C%2Ftest%3Eooo"

让我们尝试解析v”中“b=”之后的内容

const char *PATTERN1 = "b=";
const char *PATTERN2 = "&";

char *END = NULL;
char *START = strstr(v, PATTERN1);

if (START) {
START = START + strlen(PATTERN1);
char * END = strstr(START, PATTERN2);

if (!END){
ENDm = START + strlen(START);
}

TARGET = malloc(END - START + 1);
memcpy(TARGET, START, END - START);
TARGET[END - START] = '\0';
}

printf("--%s--",TARGET);

结果:

--abc%3C%2Ftest%!--

最后缺少一些东西。 (还有一个额外的“!”)

现在让我们在“v2”上使用上面相同的代码

--abc%3C%2Ftest%3Eabc--

这次什么都没有丢失

最佳答案

不能将字符串存储在 1 个字符的数组中。您可以存储的唯一字符串是 ""(空字符串),因为它只需要一个字符作为 '\0' 终止符。

您的代码存在未定义的行为,因此无法对此进行推理。

关于c - 相同的字符串。一个人行为不端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44694117/

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