zoukankan      html  css  js  c++  java
  • 字符串函数---strcat()与strncat具体解释及实现

    一、strcat()与strncat()

         strcat():strcat(dest,src);        strcat把src所指向的字符加入到dest结尾处(覆盖原dest结尾处的'')。并加入新的''。


         说明:src和dest所指内存区域不能够重叠,而且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针。


         strncat():strncat(dest,src,n);      strncat把速溶茶所指向的字符的前n个字符加入到dest结尾处(覆盖原dest结尾处的''),并加入新的''。


         说明: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.以''结束读取、连接

    #include<iostream>
    #include<string>
    
    using namespace std;
    
    int main()
    {
    	char a[100]="lanzhihui is ";
    
    	char b[]="a good boy!";
    
    	strcat(a,b);//连接以''结束,即数组a以''停止,数组b以''停止
    
    	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!='') ++cp;
    
    	while((*cp++=*str++)!='')
    	{
    		//
    	}
    
    	return dest;
    }
    
    char *strncat_m(char *dest,const char *str,int n)
    {
    	assert((dest!=NULL)&&(str!=NULL));
    	char *cp=dest;
    
    	while(*cp!='') ++cp;
    
    	while(n&&(*cp++=*str++)!='')
    	{
    		--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()函数功能实现。

  • 相关阅读:
    Spring Boot
    Linux入门
    synchronized(一)
    避免XSS攻击
    MySql概述及入门(五)
    MySQL概述及入门(四)
    上传漏洞总结-upload-labs
    文件类型解析漏洞防御与攻击(PHP)
    Dvna for Owasp top 10 2017
    XSS 漏洞介绍
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7170261.html
Copyright © 2011-2022 走看看