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;
-
}
- 1
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;
-
}
- 1
二、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;
-
}
- 1
与调用原函数结果一样,strcat_m()与strncat_m()函数功能实现。
第一段函数的strncat那里的结果有一点问题。
转自:https://blog.csdn.net/lanzhihui_10086/article/details/39828901#commentBox