gpt4 book ai didi

c - 字符串操作中的双重错误

转载 作者:行者123 更新时间:2023-12-02 05:30:07 24 4
gpt4 key购买 nike

如果传递了一个长字符串,则为以下代码获取双重免费。我尝试了各种各样的事情。如果我删除 free(s) 行,它就会消失。不确定为什么会这样。

void format_str(char *str1,int l,int o) {
char *s = malloc(strlen(str1)+1);
char *s1=s, *b = str1;
int i=0;
while(*str1!='\0') {
i++;
*s1++=*str1++;

if(i>=l) {
if(*str1!=',') {
continue;
}
*s1++=*str1++;
*s1++='\n';
for(i=0;i<o;i++) {
*s1++=' ';
}
i = 0;
}
}
*s1 = '\0';
strcpy(b,s);
free(s);
}

最佳答案

您可能没有在 s 中为要复制的数据量分配足够的空间。我不知道你的逻辑到底在做什么,但我看到了类似的东西

        *s1++=*str1++;
*s1++='\n';

您要将多个字符复制到 s(通过 s1)以获取 str1 中的单个字符。

为了所有可计算的东西,使用更好的变量名!

关于c - 字符串操作中的双重错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504710/

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