我有以下程序无法合并两个字符串,因为string1没有足够的空间来容纳合并的字符串。当string1没有足够的空间而没有使用附加数组来保存合并字符串时如何返回合并字符串?
#include<stdio.h>
#include<string.h>
int main()
{
void strcat2(char *str1,char *str2);
strcat2("john","kris");
getchar();
}
void strcat2(char *str1,char *str2)
{
for (; *str1++;);
for (;*str1++ =*str2++;);
}
答案 0 :(得分:3)
你可以尝试这个,因为这是一个更好的或只是分配更多的空间。: -
#include <stdlib.h>
#include <string.h>
char* concat(const char *s1, const char *s2)
{
char *result = malloc(strlen(s1)+strlen(s2)+1);
strcpy(result, s1);
strcat(result, s2);
return result;
}
答案 1 :(得分:2)
在C中,你必须自己分配内存。这意味着通常函数不可能以垃圾收集语言的方式返回字符串。当您需要从函数返回一个字符串时,您必须传入由调用者预先分配的结果字符串,或者动态分配它并依赖调用者来释放它。
C中没有捷径,你只需要做好工作。