如果长字符串通过,则获得以下代码的双倍空闲.我尝试过各种各样的事情.如果我删除了自由线,它会消失.不知道为什么会这样.
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);
}
Run Code Online (Sandbox Code Playgroud)
您可能没有s为要复制的数据量分配足够的空间.我不知道你的逻辑是做什么的,但我看到了类似的东西
*s1++=*str1++;
*s1++='\n';
Run Code Online (Sandbox Code Playgroud)
你将一个以上的角色复制到s(通过s1)一个角色的地方str1.
对于所有可计算的爱,使用更好的变量名!