字符串函数---strcat()与strncat详解及实现

来源:互联网 发布:mac系统怎么下载steam 编辑:程序博客网 时间:2024/05/21 05:40

一、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(){//以下strcatchar a[30]="lanzhihui is ";char b[]="a good boy!";strcat(a,b); //如果数组a的剩余存储空间不足以存放数组b,则出错。             //数组a中字符串的成为连接后的字符串cout<<"strcat(a,b):"<<a<<endl;//以下strncatchar 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(){//以下strcatchar a[30]="lanzhihui is ";char b[]="a good boy!";strcat_m(a,b); cout<<"strcat(a,b):"<<a<<endl;//以下strncatchar 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()函数功能实现。

3 0
原创粉丝点击