字符串函数---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 ...
随机推荐
- python3--__getattr__和__setattr__捕捉属性的一个引用
__getattr__和__setattr__捕捉属性的一个引用 __getattr__方法是拦截属性点号运算.更确切地说,当通过对未定义(不存在)属性名称和实例进行点号运算时,就会用属性名称为字符串 ...
- BZOJ 3925 [Zjoi2015]地震后的幻想乡 ——期望DP
我们只需要考虑$\sum F(x)P(x)$的和, $F(x)$表示第x大边的期望,$P(x)$表示最大为x的概率. 经过一番化简得到$ans=\frac{\sum T(x-1)}{m+1}$ 所以就 ...
- 【扩展kmp+最小循环节】HDU 4333 Revolving Digits
http://acm.hdu.edu.cn/showproblem.php?pid=4333 [题意] 给定一个数字<=10^100000,每次将该数的第一位放到放到最后一位,求所有组成的不同的 ...
- leetcode 347 priority,map的使用
主要是对次数进行排序,然后去前几个最大次数的值,输出即可 class Solution { public: vector<int> topKFrequent(vector<int&g ...
- bzoj2748 [HAOI2012]音量调节 背包
Description 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改 ...
- C 语言中可以调用命令行指令的 system()函数
C语言有一个system函数(在<stdlib.h>头中,C++则为<cstdlib>头),可以用来调用终端命令.原型如下: int system(const char *cm ...
- 圆桌聚餐(cogs 729)
«问题描述:假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐.为了 ...
- 【bzoj4004】【JLOI2015】装备购买 (线性基+高斯消元)
Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 < ...
- sqlplus 命令 错误
SP2-1503: 无法初始化 Oracle 调用界面 用管理员运行就可以了
- BZOJ——1626: [Usaco2007 Dec]Building Roads 修建道路
http://www.lydsy.com/JudgeOnline/problem.php?id=1626 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1 ...