C函数返回连接的字符串

标签 c string function pointers concatenation

我试图在 C 中创建一个函数来返回一个字符串,该字符串是连接两个较小字符串的结果。我的代码如下所示:

const char *concat(char* s1, char* s2){
    char ns[strlen(s1) + strlen(s2) + 1];
    ns[0] = '\0';
    strcpy(ns, s1);
    strcpy(ns, s2);
    return ns;
}

我知道字符串 ns 只存在于函数的范围内,不能返回,但是指针字符串将不可编辑,并且会破坏函数的目的。是否有更好的方法来执行此操作,或者该功能是否存在根本性缺陷?

最佳答案

你可以使用这个例子,使用 strcat() 是非常简单的方法:

#include <stdio.h>
#include <string.h>

void concat(char* s1, char* s2, char* ns) {
    ns[0] = '\0';
    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函数返回连接的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29616543/

相关文章:

c - 为什么这个程序没有按其应有的方式运行?

Swift Playground - 如何将带逗号的字符串转换为带小数的字符串

c# - 如何将类作为方法的参数传递?

javascript - 如何从用户创建的数组中专门拼接出一个项目?

c++ - 使用Boost获取成员函数的arity和paramerter类型? ( boost::函数特性)

c - 驻留在一个内存地址的两个整数变量?

c - 检查 char* 指针是否为空终止字符串的便携方法

c - 函数参数是结构体,在调用时为其成员赋值

ruby - ERB 中的多行字符串缩进

c# - 如何查找字符串中的两个引号