连接两个 *chars w/o 字符串函数?
concat two *chars w/o string functions?
我想知道如何在不使用字符串复制和字符串连接的情况下将两个 *chars 连接在一起。
到目前为止我有这个:
char *concat(char *pt1, char *pt2)
{
char* c;
c = malloc(strlen(a) + strlen(b));
return c;
}
如果我使用的是字符串函数,我可以这样做:
strcpy(str3, str1);
strcat(str3, str2);
有什么提示吗?
如Weather Vane
所述,终止符加1'[=12=]'
。在你的函数中使用它:-
char *concat(char *str1, char *str2)
{
char* str3;
int i=0;
str3 = malloc(strlen(str1) + strlen(str2) + 1);
if (str3 == NULL)
return NULL;
while(*str1){
str3[i++]=*str1++;
}
while(*str2){
str3[i++]=*str2++;
}
str3[i]='[=10=]';
return str3;
}
你循环复制字符。如果您想针对此特定操作进行优化,那么在将第一个字符串复制到目标字符串后,您可以保留目标字符串的结束指针,并使用它开始复制下一个字符串,而不是循环再次查找结尾或将长度添加到目的地的起始指针。
我想知道如何在不使用字符串复制和字符串连接的情况下将两个 *chars 连接在一起。
到目前为止我有这个:
char *concat(char *pt1, char *pt2)
{
char* c;
c = malloc(strlen(a) + strlen(b));
return c;
}
如果我使用的是字符串函数,我可以这样做:
strcpy(str3, str1);
strcat(str3, str2);
有什么提示吗?
如Weather Vane
所述,终止符加1'[=12=]'
。在你的函数中使用它:-
char *concat(char *str1, char *str2)
{
char* str3;
int i=0;
str3 = malloc(strlen(str1) + strlen(str2) + 1);
if (str3 == NULL)
return NULL;
while(*str1){
str3[i++]=*str1++;
}
while(*str2){
str3[i++]=*str2++;
}
str3[i]='[=10=]';
return str3;
}
你循环复制字符。如果您想针对此特定操作进行优化,那么在将第一个字符串复制到目标字符串后,您可以保留目标字符串的结束指针,并使用它开始复制下一个字符串,而不是循环再次查找结尾或将长度添加到目的地的起始指针。