博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C语言学习笔记】字符串拼接的3种方法
阅读量:7122 次
发布时间:2019-06-28

本文共 1478 字,大约阅读时间需要 4 分钟。

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

 

 

#include
#include
#include
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/lovemyspring/articles/4159612.html

你可能感兴趣的文章
web前端,使用HTML5+CSS+JS框架有那些好处
查看>>
ora.proxy_advm
查看>>
GitHub在其网站实现中移除对jQuery的使用
查看>>
美国明尼苏达州大学研制出仿生眼原型
查看>>
这些年,我是如何当好一个技术支持的
查看>>
多个网站域名进行301跳转合并对SEO有什么影响
查看>>
Linux学习笔记1_用户和权限
查看>>
安装mysql 配置环境变量
查看>>
一学就会的django项目服务器部署nginx-uwsgi-django/build
查看>>
ICPR 2018|阿里巴巴读光OCR及MTWI数据集亮相引关注
查看>>
对象存储oss中bucket中存在的文件夹怎么移动或者复制到另一个账号中的对象存储oss中???...
查看>>
RocksDB Write Prepared Policy
查看>>
那些我希望在一开始使用 Zsh(oh-my-zsh) 时就知道的
查看>>
为节省内存,Firefox 将用新方式阻止加载没用到的标签页
查看>>
JDBC学习再小结
查看>>
P3 项目轶事之面试
查看>>
韩国政府联合现代汽车,力争抢在日本之前让自动驾驶汽车上路
查看>>
屌炸天,JDK8的排序大法!!
查看>>
android兼容oppo手机刘海屏解决方案
查看>>
html中让input标签只读不可编辑的方法
查看>>