我的任务是能够concat两个字符串,并使用指针返回一个新的字符串。它应该返回一个新的字符串,但它目前返回一个空格。下面是我的代码:
char* concat(char* first, char* second){
int string1Len = strlen(first);
int string2Len = strlen(second);
int length = string1Len + string2Len;
char* string = malloc(sizeof(char)*length);
int i;
while(i < string1Len){
*(string + i) = *first;
first+= 1;
i+= 1;
}
while( i < length){
*(string + i) = *second;
second+= 1;
i+= 1;
}
return string;
}
4条答案
按热度按时间carvr3hs1#
除了unitialized
int i = 0
,你的代码看起来很好。这在我的机器上工作:**P.S.**使用
string[i]
而不是*(string + i)
,它通常被认为更具可读性。3okqufwl2#
erhoui1w3#
OP代码错误
Index未初始化
不追加或分配空字符
小事
sizeof(char)始终为1
int
可能太窄不能使用
strlen()
“没有字符串库函数”
分配缺少检查
因为源字符串不修改,所以使用
const
。这允许更好地使用函数和潜在的优化。
一些未经测试的替代代码。注意没有整型变量。
piok6c0g4#
String库?我从来没用过:P
注意,你需要自己分配第一个参数,因为这个函数本身并不连接
dest
指针,所以返回值(是可选^^)。我还注意到,由于某种原因......每个人都在函数本身中分配内存,所以我做了我的第二版本。然而,它不像第一个(尽管你需要返回值)。