字符串函数---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 ...
随机推荐
- BNUOJ 3580 Oulipo
Oulipo Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 3 ...
- [android开发篇]自定义权限
有时候,我们可能遇到如下需求场景:当用户在一个应用程序中进行某项操作时,会启动另外一个应用程序,最常见的时直接打开了另外一个应用程序,并进入其中某个Activity(如:有的应用中有推荐应用列表,当用 ...
- 【Luogu】P2827蚯蚓(堆转队列)
按照国际惯例先发题目链接 woc从4月就开始做这sb题.最开始30分升到65分不管了,直到最近几天升到85分,再到今天AC.激动的心情自然是那些一遍就A或者一小时以内就A的神犇难以想象的. 下面说说 ...
- 刷题总结——bzoj1725(状压dp)
题目: 题目描述 Farmer John 新买了一块长方形的牧场,这块牧场被划分成 N 行 M 列(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地. FJ ...
- java之线程池面试题
面试官:线程池有哪些?分别的作用是什么? 常用的线程池有: newSingleThreadExecutor newFixedThreadExecutor newCacheThreadExecutor ...
- Linux 下测试磁盘读写 I/O 速度的方法汇总
在分布式异构存储系统中,我们经常会需要测量获取不同节点中硬盘/磁盘的读写 I/O 速度,下面是 Linux 系统下一些常用测试方法(之后不定期更新): 1.使用 hdparm 命令这是一个是用来获取A ...
- LINUX支持哪些文件系统
我们在Linux中常用的文件系统主要有ext3.ext2及reiserfs :Windows和Dos常用的文件系统是fat系列(包括fat16及fat32等)和ntfs 文件系统:光盘文件系统是ISO ...
- ElasticSearch API 之 DELETE
删除API,可以根据特定的ID删除文档. $ curl -XDELETE 'http://localhost:9200/website/blog/AVbkih8AltSLRRB7XAun' 会返回下面 ...
- python中单引号,双引号,三引号的比较 转载
本文转载自http://blog.sina.com.cn/s/blog_6be8928401017lwy.html 先说1双引号与3个双引号的区别,双引号所表示的字 符串通常要写成一行 如: s1 = ...
- Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations
得到k二进制后,对每一位可取得的方法进行相乘即可,k的二进制形式每一位又分为2种0,1,0时,a数组必定要为一长为n的01串,且串中不出现连续的11,1时与前述情况是相反的. 且0时其方法总数为f(n ...