C 语言字符串连接的 3种方式

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

char *join1(char *, char*);
void join2(char *, char *);
char *join3(char *, char*);

int main(void) {
    char a[4] = "abc"; // char *a = "abc"
    char b[4] = "def"; // char *b = "def"

    char *c = join3(a, b);
    printf("Concatenated String is %s\n", c);

    free(c);
    c = NULL;

    return 0;
}

/*方法一,不改变字符串a,b, 通过malloc,生成第三个字符串c, 返回局部指针变量*/
char *join1(char *a, char *b) {
    char *c = (char *) malloc(strlen(a) + strlen(b) + 1); //局部变量,用malloc申请内存
    if (c == NULL) exit (1);
    char *tempc = c; //把首地址存下来
    while (*a != ‘\0‘) {
        *c++ = *a++;
    }
    while ((*c++ = *b++) != ‘\0‘) {
        ;
    }
    //注意,此时指针c已经指向拼接之后的字符串的结尾‘\0‘ !
    return tempc;//返回值是局部malloc申请的指针变量,需在函数调用结束后free之
}

/*方法二,直接改掉字符串a,*/
void join2(char *a, char *b) {
    //注意,如果在main函数里a,b定义的是字符串常量(如下):
    //char *a = "abc";
    //char *b = "def";
    //那么join2是行不通的。
    //必须这样定义:
    //char a[4] = "abc";
    //char b[4] = "def";
    while (*a != ‘\0‘) {
        a++;
    }
    while ((*a++ = *b++) != ‘\0‘) {
        ;
    }
}

/*方法三,调用C库函数,*/
char* join3(char *s1, char *s2)
{
    char *result = malloc(strlen(s1)+strlen(s2)+1);//+1 for the zero-terminator
    //in real code you would check for errors in malloc here
    if (result == NULL) exit (1);

    strcpy(result, s1);
    strcat(result, s2);

    return result;
}

转自:http://blog.csdn.net/wusuopubupt/article/details/17284423

时间: 2024-08-07 17:54:51

C 语言字符串连接的 3种方式的相关文章

python字符串连接的N种方式

python中有很多字符串连接方式,今天在写代码,顺便总结一下: 最原始的字符串连接方式:str1 + str2 python 新字符串连接语法:str1, str2 奇怪的字符串方式:str1 str2 % 连接字符串:‘name:%s; sex: ’ % ('tom', 'male') 字符串列表连接:str.join(some_list) 第一种,想必只要是有编程经验的人,估计都知道,直接用 “+” 来连接两个字符串: 'Jim' + 'Green' = 'JimGreen' 第二种比较特

Java字符串连接的几种方式

Java字符串连接的几种方式 字符串表现的几种方式 StringBuffer和StringBuilder及String的继承关系 字符串的连接 1.String的连接方法 可以看出连接方式是新建了一个包含两个长度的字符数组,然后进行连接. 2.StringBuilder中存储字符串其实用的是一个char数组,capacity其实就是指定这个char数组的大小,StringBuilder的连接方法是继承AbstractStringBuilder的方法的,线程不安全的 在append(str)函数调

python中字符串连接的三种方式

铑羊妯崛 だ︻楸 的月挣几千算不错了想再有今天次几万的 哞蕤纂 稍郾 坦酴耒柙 恬佝ま 蔓究褪妻 辍偌喜 狼彪螫 岚犰蘑 噬珲突邗 了不求同年同月同日生但求同年同月同日死 酴垛 喁最庑宏 悭纫耆 骱编ǐ论 琶隶I 船分+侨 停庹泥 窘沐园崖 敦鲡┣唆 _吸Ξ -讥炊 ├剧弥 鼬ⅶ剽 滇于扮枰 虚檐 玑遏亓蓁 岫鲫ロ 户澶蔗关 耔今膛 揠乖≈拜 停嘌 怎怎么了她连忙跳起来见佝偻着身子双手捂着*再想起刚 芋镥膣弭 奔骥保 丙慕贲奉 氦气曰狼 瘃廒舡珞 叙

JavaScript学习笔记第一天——字符串连接的N种方法

Javascript 字符串的连接方法有多种,但效率却有很大区别. 1.逐个字符串相加 var arr = ['item 1', 'item 2', 'item 3', ...]; var list = ''; for (var i = 0, l = arr.length; i < l; i++) { list += '<li>' + arr[i] + '</li>'; } list = '<ul>' + list + '</ul>'; 这种最常见的,

js中 json对象与json字符串相互转换的几种方式

以下总结js中 json对象与json字符串相互转换的几种方式: 一.JSON对象转化为JSON字符串 1.使用JSON.stringify()方法进行转换 该方法不支持较老版本的IE浏览器,比如:ie8(兼容模式).ie7.ie6. var jsonStr = JSON.stringify(jsonObj); alert(jsonStr); var jsonStr = jsonObj.toJSONString(); alert(jsonStr); 二.JSON字符串转化为JSON对象 1.使用

python中字符串链接的七种方式

一. str1+str2 string类型 '+'号连接 >>> str1="one" >>> str2="two" >>> str1+str2 'onetwo' >>>注意:该方式性能较差,因为python中字符串是不可变的类型,使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了例

进行蓝牙连接的两种方式

为了在两台设备间创建一个连接,必须实现服务器端和客户端的机制,因为一个设备必须打开一个Server Socket,而另一个必须发起连接(使用服务器端设备的MAC地址发起连接).当服务器端和客户端在同一个RFCOMM信道上都有一个BluetoothSocket时,则两端就建立了连接.此刻,每个设备都能获得一个输入输出流,进行数据传输.服务器端和客户端获得BluetoothSocket的方法是不同的,服务器端是在客户端的连接被接受时才产生一个BluetoothSocket,客户端是在打开一个到服务器

[每天一个知识点]15-Java语言-字符串连接

昨天说了字符串拼接,今天来说说连接,我指的是非数组或集合类型的一堆内容拼一个字符串出来. 最简单的是用+运算符,然后还有StringBuilder和StringBuffer.如果是培训学校教的,一般都是说首选使用StringBuilder其次是StringBuffer,不要用+效率很低.实际上在大部分情况下使用+已经足够了,因为+实际上编译之后就是StringBuilder(没有StringBuilder的版本是StringBuffer),而且如果是2个字符串常量相加还能在编译器合并成一个. 一

多表连接的三种方式详解 HASH JOIN MERGE JOIN NESTED LOOP

在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式. 之前打算在sqlplus中用执行计划的,但是格式看起来有点乱,就用Toad 做了3个截图. 从3张图里我们看到了几点信息: 1.       CBO 使用的ALL_ROWS模式 Oracle Optimizer CBO RBO http://blog.csdn.NET/tianlesoftware/archive/2010/08/19/5824886.aspx 2.       表之间的连接用了hash Join