字符串函数---strcat()与strncat具体解释及实现
一、strcat()与strncat()
strcat():strcat(dest,src); strcat把src所指向的字符加入到dest结尾处(覆盖原dest结尾处的'\0')。并加入新的'\0'。
说明:src和dest所指内存区域不能够重叠,而且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针。
strncat():strncat(dest,src,n); strncat把速溶茶所指向的字符的前n个字符加入到dest结尾处(覆盖原dest结尾处的'\0'),并加入新的'\0'。
说明:src和dest所指内存区域不能够重叠,而且dest必须有足够的空间来容纳src的前n个字符串,返回指向dest的指针。
1.详细实例:
#include<iostream>
#include<string> using namespace std; int main()
{
//下面strcat
char a[30]="lanzhihui is "; char b[]="a good boy!"; strcat(a,b); //假设数组a的剩余存储空间不足以存放数组b,则出错。
//数组a中字符串的成为连接后的字符串 cout<<"strcat(a,b):"<<a<<endl; //下面strncat
char c[30]="Hello ";
char d[]="world!";
strncat(c,d,sizeof(d)-1); cout<<"strncat(c,d):"<<c<<endl; strncat(c,d,30); //仅仅要是c中空间足够大,能够存储d中的字符串。n为不论什么值都能够(实际上连接是依照d数组中的字符个数计算的) cout<<"strncat(c,d):"<<c<<endl; system("pause");
return 0;
}
2.以'\0'结束读取、连接
#include<iostream>
#include<string> using namespace std; int main()
{
char a[100]="lanzhi\0hui is "; char b[]="a good \0boy!"; strcat(a,b);//连接以'\0'结束,即数组a以'\0'停止,数组b以'\0'停止 cout<<a<<endl; system("pause");
return 0;
}
二、strcat()与strncat()的详细实现
#include<iostream>
#include<assert.h> using namespace std; char *strcat_m(char *dest,const char *str)
{
assert((dest!=NULL)&&(str!=NULL));
char *cp=dest; while(*cp!='\0') ++cp; while((*cp++=*str++)!='\0')
{
//
} return dest;
} char *strncat_m(char *dest,const char *str,int n)
{
assert((dest!=NULL)&&(str!=NULL));
char *cp=dest; while(*cp!='\0') ++cp; while(n&&(*cp++=*str++)!='\0')
{
--n;
} return dest;
} int main()
{
//下面strcat
char a[30]="lanzhihui is "; char b[]="a good boy!"; strcat_m(a,b); cout<<"strcat(a,b):"<<a<<endl; //下面strncat
char c[30]="Hello ";
char d[]="world!";
strncat_m(c,d,sizeof(d)-1); cout<<"strncat(c,d):"<<c<<endl; strncat_m(c,d,30); cout<<"strncat(c,d):"<<c<<endl; system("pause");
return 0;
}
与调用原函数结果一样。strcat_m()与strncat_m()函数功能实现。
字符串函数---strcat()与strncat具体解释及实现的更多相关文章
- c常用函数-strcat 和 strncat
strcat 和 strncat strcat与strncat都是字符串连接函数,功能上稍有区别: strcat可以把一个字符串的全部内容复制到另一个字符串的后面; strncat则是把一个字符串的指 ...
- 字符串函数---strcmp()与strncmp()具体解释及实现
一.strcmp()与strncmp() strcmp():strcmp(s1,s2); 比較两个字符串. strncmp():strncmp(s1,s2); ...
- 软件素材---linux C语言:拼接字符串函数 strcat的用例(与char数组联合使用挺好)
[头文件]#include <string.h> [原型] 1 char *strcat(char *dest, const char *src); [参数]: dest 为目标字符串指针 ...
- 字符串函数的实现(三)之strcat
C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...
- 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()
实现字符串函数,strlen(),strcpy(),strcmp(),strcat() #include<stdio.h> #include<stdlib.h> int my_ ...
- loadrunner比较有用的字符串函数
loadrunner比较有用的字符串函数 ******************************************************************************* ...
- 【Linux C中文函数手册】之 内存和字符串函数
内存和字符串函数 1) bcmp 比较内存内容 相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp表头文件 #include<stri ...
- Linux C 程序 字符串函数(12)
字符串函数C语言的字符串处理函数1.puts函数 //把一个以'\0'结尾的字符串输出到屏幕 char a[] = "Welcome to"; char *p = "Li ...
- strcat与strncat的C/C++实现
2013-07-05 15:47:19 本函数给出了几种strcat与strncat的实现,有ugly implementation,也有good implementation.并参考标准库中的imp ...
随机推荐
- 在windows下安装flex和bison、GCC
学习Stellar-core 需要依赖项flex .bison .gcc三个依赖项 下载得网址:链接: https://pan.baidu.com/s/1mitCLcs 密码: 3jaj 通过 w ...
- iOS视图边框的简单做法
我们绘制UI界面的时候,一般我们做边框是用layer,然后再给它上面添加阴影什么的,我比较喜欢用下面这个方法, UI弄几张边框的图片,用代码给图片拉伸 - (UIImage *)changeBorde ...
- 【Luogu】P2617Dynamic Ranking(树状数组套主席树)
题目链接 树状数组套主席树有点难懂qwq 不好理解 树状数组套主席树的直观理解应该是:树状数组的每一个节点是一棵主席树. 普通区间修改我们是创建1个线段树,树状数组套主席树的时候我们就创建log个线段 ...
- Python GUI 之 Treeview 学习
例子1 from tkinter import *import tkinter.ttk as ttk win = Tk()win.title("Treeview 学习") col ...
- POJ 2154 Color ——Burnside引理
[题目分析] 数据范围有些大. 然后遍求欧拉函数,遍求和就好了,注意取模. [代码] #include <cstdio> #include <cstring> #include ...
- [BZOJ4776] [Usaco2017 Open]Modern Art(差分 + 思维?)
传送门 可以预处理出每种颜色的上下左右的位置,这样就框出来了一个个矩形,代表每种颜色分别涂了哪里. 然后用二维的差分. 就可以求出来每个位置至少涂了几次,如果 > 1 的话,就肯定不是先涂的, ...
- [BZOJ2342] [Shoi2011]双倍回文(manacher)
传送门 manacher...... 先跑一边manacher是必须的 然后枚举双倍回文串的对称轴x 把这个双倍回文串分成4段,w wR w wR 发现,只有当 y <= x + p[x] / ...
- mybatis学习(三)——接口式编程
对于上一节中的查询我们还可以通过接口的方式进行编程,开发环境和上一节一样 1.全局配置文件mybatis_config.xml(和上一节一样) <?xml version="1.0&q ...
- 【bzoj4320】【ShangHai2006 Homework】【并查集+离线处理】
ShangHai2006 Homework Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 918 Solved: 460[Submit][Statu ...
- C++ string 类中的 assign()函数
C++ string 类的成员函数,用于拷贝.赋值操作,它们允许我们顺次地把一个 string 对象的部分内容拷贝到另一个 string 对象上. 函数原型 string &operator= ...