return 连接字符串的 C 函数
C function to return concatenated string
我正尝试在 C 中创建一个函数来 return 一个字符串,该字符串是连接两个较小字符串的结果。我的代码如下所示:
const char *concat(char* s1, char* s2){
char ns[strlen(s1) + strlen(s2) + 1];
ns[0] = '[=11=]';
strcpy(ns, s1);
strcpy(ns, s2);
return ns;
}
我知道字符串 ns
只存在于函数的范围内,不能被 returned,但是指针字符串是不可编辑的并且会破坏函数的目的。有没有更好的方法来做到这一点,或者该功能是否存在根本性缺陷?
通过使用malloc()
在堆内存中创建动态字符串解决:
const char *concat(char* s1, char* s2){
char *ns = malloc(strlen(s1) + strlen(s2) + 1);
ns[0] = '[=10=]';
strcat(ns, s1);
strcat(ns, s2);
return ns;
}
确保free()
之后的记忆。
连接两个字符串的 C 函数是 strcat!
int main(void)
{
char *s1="Good ";
char *s2="luck";
char ns[12];
strcpy(ns,s1);
strcat(ns,s2);
printf("%s\n",ns);
return 0;
}
你也可以这样使用strcat:
strcpy(ns,s1);
printf("%s\n", strcat(ns,s2));
你可以使用这个例子,使用 strcat() 是非常简单的方法:
#include <stdio.h>
#include <string.h>
void concat(char* s1, char* s2, char* ns) {
ns[0] = '[=10=]';
strcpy(ns, s1);
strcat(ns, s2);
}
int main(int argc, char const *argv[])
{
char* s1="hola";
char* s2 =" mundo";
char s3[strlen(s1) + strlen(s2) + 1];
concat(s1, s2, s3);
printf("\n%s",s3);
printf("\n");
return 0;
}
查找更多信息here
我正尝试在 C 中创建一个函数来 return 一个字符串,该字符串是连接两个较小字符串的结果。我的代码如下所示:
const char *concat(char* s1, char* s2){
char ns[strlen(s1) + strlen(s2) + 1];
ns[0] = '[=11=]';
strcpy(ns, s1);
strcpy(ns, s2);
return ns;
}
我知道字符串 ns
只存在于函数的范围内,不能被 returned,但是指针字符串是不可编辑的并且会破坏函数的目的。有没有更好的方法来做到这一点,或者该功能是否存在根本性缺陷?
通过使用malloc()
在堆内存中创建动态字符串解决:
const char *concat(char* s1, char* s2){
char *ns = malloc(strlen(s1) + strlen(s2) + 1);
ns[0] = '[=10=]';
strcat(ns, s1);
strcat(ns, s2);
return ns;
}
确保free()
之后的记忆。
连接两个字符串的 C 函数是 strcat!
int main(void)
{
char *s1="Good ";
char *s2="luck";
char ns[12];
strcpy(ns,s1);
strcat(ns,s2);
printf("%s\n",ns);
return 0;
}
你也可以这样使用strcat:
strcpy(ns,s1);
printf("%s\n", strcat(ns,s2));
你可以使用这个例子,使用 strcat() 是非常简单的方法:
#include <stdio.h>
#include <string.h>
void concat(char* s1, char* s2, char* ns) {
ns[0] = '[=10=]';
strcpy(ns, s1);
strcat(ns, s2);
}
int main(int argc, char const *argv[])
{
char* s1="hola";
char* s2 =" mundo";
char s3[strlen(s1) + strlen(s2) + 1];
concat(s1, s2, s3);
printf("\n%s",s3);
printf("\n");
return 0;
}
查找更多信息here