【C语言学习笔记】字符串拼接的3种方法 .
昨天晚上和@buptpatriot讨论函数返回指针(malloc生成的)的问题,提到字符串拼接,做个总结。
- #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;
- }
转载于:https://www.cnblogs.com/wangluochong/p/4169727.html
【C语言学习笔记】字符串拼接的3种方法 .相关推荐
- C语言学习笔记---字符串拼接函数 strcat() 和 strncat()
strcat()函数 strcat()函数主要用来拼接字符串,用于将一个字符串拼接到另一个字符串的后面.下面通过一个简单的例子来演示一下这个函数的使用方法. int main() {char s ...
- js 字符串拼接的4种方法
一.使用连接符 + 把想要连接的字符串串起来 let shy = '帅哥' let a = '我是' + shy console.log(a) // 我是帅哥 二.模板字符串 模板字符串(templa ...
- C语言学习笔记之字符串拼接的2种方法
1. 使用strcat进行字符串拼接 #include <stdio.h> #include <stdlib.h> #include <string.h>int m ...
- python关系运算符可以连续使用_python学习笔记-字符串拼接关系运算符逻辑运算符...
#字符串拼接&关系运算符&逻辑运算符 print()函数 #print()函数输出时候,可以指定多个输出值之间的分隔符,参数sep='' 设置 print('a','b','c',se ...
- C语言学习笔记——字符串结束符\0
C语言中的字符串结束符\0标志着字符串的结束,由编译器自己加上的,ASCII值为0,表示NULL,ASCII中有很多不可见字符由转义字符\和可见字符来标识的,当然可见字符也能用转义字符表示.
- ORACLE学习笔记-字符拼接中单引号输出方法
oracle sql语句中拼接包含单引号的字符串有两种方法: 方法一: 四个单引号('''')可以返回一个单引号,前后两个是界定符,中间两个单引号是转移后的一个单引号,如: 方法二: 使用q'[ ]' ...
- Java字符串拼接的五种方法,哪种性能最好?
作者 | 老坛酸菜WH 来源 | https://www.cnblogs.com/twzheng/p/5923642.html > 字符串拼接一般使用"+",但是" ...
- python 字符串拼接_Python字符串拼接的6种方法(转)
add by zhj: 对于多行字符串连接,第6种连接方法很方便,连接时不会添加额外的空格. 1. 加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此 ...
- 关于字符串拼接的几种方法
字符串拼接方式 1.String中的 + 一,使用+拼接字符串在Java中,拼接字符串最简单的方式就是直接使用符号+来拼接.如:String s1 = "hello";String ...
最新文章
- echart x轴标签偏移_移动端H5页面滑动手势X轴实例
- dependent-name ‘xxx::yyy’ is parsed as a non-type, but instantiation yields a type
- 偏差、方差、贝叶斯误差
- Highcharts图表-ajax-获取json数据生成图表
- IDEA通过git怎么回滚到某个提交节点或某个版本
- AUTOSAR从入门到精通100讲(六)-AUTOSAR中的PostBuild Data Set Generation Phase
- android jpush json,发送了正确的JPush json却报1002
- 1558. 得到目标数组的最少函数调用次数 二进制|思维
- 手把手教你做用户画像
- 删除China Lucky系列病毒 后缀.evopro勒索病毒数据恢复方法,解密处理方式
- WinEdt编译重新生成PDF以及找到模板tex对应的论文树形结构
- 0框架前端-如何写垂侧边栏(Vertical Tabs)
- EXCEL中的数据分析—描述统计
- phpstudy php redis,phpstudy拓展redis
- pycharm interpreter invalid
- 不要走开,有足够多的理由持续关注下去
- 服务器主板内存频率修改,小白也能玩超频 手把手教你将内存频率提升1100MHz
- 如何升级dart sdk以及choco不是内部或外部命令
- 使用HTML+CSS技术制作篮球明星介绍网站
- 孤岛危机简体中文版 机器人_孤岛危机系列1-3合集|孤岛危机游戏全系列1-3合集简体中文版_ - 极光下载站...