一、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具体解释及实现的更多相关文章

  1. c常用函数-strcat 和 strncat

    strcat 和 strncat strcat与strncat都是字符串连接函数,功能上稍有区别: strcat可以把一个字符串的全部内容复制到另一个字符串的后面; strncat则是把一个字符串的指 ...

  2. 字符串函数---strcmp()与strncmp()具体解释及实现

    一.strcmp()与strncmp() strcmp():strcmp(s1,s2);            比較两个字符串.        strncmp():strncmp(s1,s2);   ...

  3. 软件素材---linux C语言:拼接字符串函数 strcat的用例(与char数组联合使用挺好)

    [头文件]#include <string.h> [原型] 1 char *strcat(char *dest, const char *src); [参数]: dest 为目标字符串指针 ...

  4. 字符串函数的实现(三)之strcat

    C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...

  5. 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()

    实现字符串函数,strlen(),strcpy(),strcmp(),strcat() #include<stdio.h> #include<stdlib.h> int my_ ...

  6. loadrunner比较有用的字符串函数

    loadrunner比较有用的字符串函数 ******************************************************************************* ...

  7. 【Linux C中文函数手册】之 内存和字符串函数

    内存和字符串函数 1) bcmp 比较内存内容 相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp表头文件 #include<stri ...

  8. Linux C 程序 字符串函数(12)

    字符串函数C语言的字符串处理函数1.puts函数 //把一个以'\0'结尾的字符串输出到屏幕 char a[] = "Welcome to"; char *p = "Li ...

  9. strcat与strncat的C/C++实现

    2013-07-05 15:47:19 本函数给出了几种strcat与strncat的实现,有ugly implementation,也有good implementation.并参考标准库中的imp ...

随机推荐

  1. python3--__getattr__和__setattr__捕捉属性的一个引用

    __getattr__和__setattr__捕捉属性的一个引用 __getattr__方法是拦截属性点号运算.更确切地说,当通过对未定义(不存在)属性名称和实例进行点号运算时,就会用属性名称为字符串 ...

  2. BZOJ 3925 [Zjoi2015]地震后的幻想乡 ——期望DP

    我们只需要考虑$\sum F(x)P(x)$的和, $F(x)$表示第x大边的期望,$P(x)$表示最大为x的概率. 经过一番化简得到$ans=\frac{\sum T(x-1)}{m+1}$ 所以就 ...

  3. 【扩展kmp+最小循环节】HDU 4333 Revolving Digits

    http://acm.hdu.edu.cn/showproblem.php?pid=4333 [题意] 给定一个数字<=10^100000,每次将该数的第一位放到放到最后一位,求所有组成的不同的 ...

  4. leetcode 347 priority,map的使用

    主要是对次数进行排序,然后去前几个最大次数的值,输出即可 class Solution { public: vector<int> topKFrequent(vector<int&g ...

  5. bzoj2748 [HAOI2012]音量调节 背包

    Description 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改 ...

  6. C 语言中可以调用命令行指令的 system()函数

    C语言有一个system函数(在<stdlib.h>头中,C++则为<cstdlib>头),可以用来调用终端命令.原型如下: int system(const char *cm ...

  7. 圆桌聚餐(cogs 729)

    «问题描述:假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri(i=1,2,3...m), .会议餐厅共有n张餐桌,每张餐桌可容纳c i(i=1,2...n) 个代表就餐.为了 ...

  8. 【bzoj4004】【JLOI2015】装备购买 (线性基+高斯消元)

    Description 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 < ...

  9. sqlplus 命令 错误

    SP2-1503: 无法初始化 Oracle 调用界面 用管理员运行就可以了

  10. BZOJ——1626: [Usaco2007 Dec]Building Roads 修建道路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1626 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1 ...