#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;
}

进制转换

 

C语言拼接字符串以及进制转换的更多相关文章

  1. python27期day03:字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换、作业题。

    1.%s: a = "我是新力,我喜欢:%s,我钟爱:%s"b = a%("开车","唱跳rap")print(b)2.整型: 整数在Pyt ...

  2. C++笔记(7)——一些模拟题:简单模拟、查找元素、图形输出、日期处理、进制转换、字符串处理

    以下内容基本来自<算法笔记>,作者为胡凡,建议直接买书看,我这里只是摘抄部分当笔记,不完整的. 简单模拟 就是一类"题目怎么说你就怎么做"的题目.这类题目不涉及算法,只 ...

  3. 总结day3 ---- 进制转换,字符串切片,字符串常用方法.,for 循环,

    前情提要: int 的相关操作 进制转换 bit_lenth() str 的索引,以及常用的相关方法 for 循环 索引 切片 相关方法 一  : int 的相关操作 int 主要用于生活中的计算问题 ...

  4. 19-3-4 Python进制转换;bool str int三者之间的转换;字符串的索引,切片;for循环的使用

    进制转换: 二进制转十进制:  0010 1111 = 1*2**0+1*2**1+1*2**2+1*2**3+1*2**5 十进制转换二进制: 用十进制数除2逆序取余 --->101010 布 ...

  5. SHUoj 字符串进制转换

    字符串进制转换 发布时间: 2017年7月9日 18:17   最后更新: 2017年7月9日 21:17   时间限制: 1000ms   内存限制: 128M 描述 Claire Redfield ...

  6. 一起talk C栗子吧(第七回:C语言实例--进制转换)

    各位看官们.大家好,从今天開始.我们讲大型章回体科技小说 :C栗子,也就是C语言实例. 闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们.上一回中咱们说的是生成随机数的样例.这一回咱们说的 ...

  7. C# 进制转换 在什么情况下使用16进制,字节数组,字符串

    C# 进制转换 Admin2013年9月18日 名人名言:从工作里爱了生命,就是通彻了生命最深的秘密.——纪伯伦 1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Con ...

  8. 【字符串】P2084 进制转换-C++

    题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 1*2^4+0*2^3+1*2^2+0*2^1+1*2^0, 那么请你编程实现,将一个M进制的数N转换成十进 ...

  9. C语言实现进制转换——超图面试题

    递归:递归的原理,就是自己调用自己本身.存在一个顺序的问题,如果在递归前的是顺序执行,递归后的是逆序执行,如下: void gogogo() { //递归之前 gogogo(); //递归之后 } 递 ...

随机推荐

  1. 用 chrome 调试 node.js 代码

    1.全局安装 node-inspector  cnpm install -g node-inspector 2.启动node项目入口文件,如 node --inspect index.js 3.控制台 ...

  2. JavaScript动画:offset家族和匀速动画详解(含轮播图的实现)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. offset家族简介 我们知道,三大家族包括:offset/scroll ...

  3. 《CSS动画实用技巧》课程笔记

    概述 这是我学习[CSS动画实用技巧][1]的课程笔记 常用动画属性--transition [常用动画属性--transition][2] .change img{ display:block; w ...

  4. 02_HTML5+CSS3详解第五、六天(实战篇之HTML5制作企业网站)

    [废话连篇 - 实战篇,没什么好说的,最后一章兼容性问题懒得看了,over] Details 一.Xmind部分 xmind教程:http://www.jianshu.com/p/7c488d5e4b ...

  5. wampserver 的Apache启动错误提示:The requested URL / was not found on this server.

    打开localhost显示以下错误 原因:之前我配置了虚拟主机,所以服务器是从虚拟环境访问的,localhost也就访问不到 解决方法:打开httpd.conf配置文件,将Include conf/e ...

  6. History对象和location对象

    history对象 History对象包含用户在浏览器窗口中访问过的url.不是所有浏览器都支持该对象. 属性length   返回浏览器历史列表中的URL数量. 方法:back() 加载histor ...

  7. 多线程访问DataTable

    项目中需要读取数据库中的多张表.由于表的数据比较多,串行读取时耗时比较多,所以对程序做了一点优化. 环境 .NET 3.5,SQL Server 2012,Visual Studio 2015 过程 ...

  8. iOS-Xcode编码自动补全失效

    1. 退出 Xcode 2. 重启电脑 3. 找到 这个 DerivedData 文件夹 删除 (路径: ~/Library/Developer/Xcode/DerivedData) 4. 删除这个 ...

  9. Hadoop学习笔记四

    一.fsimage,edits和datanode的block在本地文件系统中位置的配置 fsimage:hdfs-site.xml中的dfs.namenode.name.dir  值例如file:// ...

  10. 利用innodb_force_recovery修复MySQL数据页损坏

    现象:启动MySQL服务时报1067错误,服务无法启动. 查看xxx.err错误日志发现有数据页损坏信息: InnoDB: Database page corruption on disk or a  ...