尝试追加字符串时出现Seg Fault

我正试图将一个字符串附加到另一个字符串上,我遇到一个段错误,似乎无法弄清楚我做错了什么。

typedef char * String; String function(String str) { // Some variables here String current = ""; String ch = ""; //More code here while() { if() { current = malloc(strlen(current) + strlen(ch) + 1); strcat(current, ch); } ... } } 

即使strcat线被注释掉,我仍然会遇到一个seg错误,反之亦然。 这可能是一件令人痛苦的事情,我很遗憾,但有人可以解释一下如何正确地做到这一点,并解释我做错了什么?

malloc之后, current不是’\ 0’终止。
strcat正在搜索此字符以了解附加位置和段错误。

malloc返回之后,您之前的current初始化没有任何意义,它指向未初始化内存的完全不同的部分。
无法确定,但从你提供的我的提示是使用realloc来扩展current大小。

在您的malloc之后,您忘记使用之前的current内容填充新分配的字符串 – 并且您不能这样做,因为您丢失了对它的引用(此外,您正在引发内存泄漏,因为您没有释放它。尝试realloc相反 – 但首先使用malloc分配current