zoukankan      html  css  js  c++  java
  • strcpy memcpy strcat strcmp memset strlen

    1.strcpy

    strcpy是拷贝字符串,以\0为标志结束

    strcpy的原型为

    char *strcpy_(char *strDest, const char *strScr)
    {
    	assert((strDest != NULL) && (strScr != NULL));
    	char *address=strDest;
    	while((*strDest++ = * strScr++) != '\0') 
    		NULL ; 
    	*strDest = '\0'; //当strScr字符串长度小于原strDest字符串长度时,如果没有改语句,就会出错了。
    	return address; 
    }


    2.memcpy

    而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符)
    memcpy的原型为

    void *memcpy_(void *dest, const void *src, size_t count)
    {
    	char *tmp = (char*)dest;
    	const char *s = (char *)src;
    	while (count--)
    		*tmp++ = *s++ ;
    	return dest;
    }


    3.strcat

    用法
    #include <string.h>   在C++中,则存在于<cstring>头文件中。
    功能
    把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
    说明
    src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。

     strcat的原型为

    char *strcat_(char *strDest, const char *strScr) 
    {
    	char * address = strDest; 
    	assert((strDest != NULL) && (strScr != NULL)); 
    	while(*strDest)
    	{ 
    		//若使用while(*strDest++),则会出错,因为++是不受循环
    		strDest++; 
    	} 
    	while(*strDest++ = *strScr++) 
    	{
    		NULL; 
    	} //此处可以加语句*strDest=’\0’;
    	return address; //为了实现链式操作,将目的地址返回
    }
    

    4.strcmp 
    用法:#include <string.h>   
    功能:比较字符串s1和s2。   
    一般形式:strcmp(字符串1,字符串2)   
    说明:   当s1<s2时,返回值<0   当s1=s2时,返回值=0   当s1>s2时,返回值>0  
    即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
    如:   "A"<"B" "a">"A" "computer">"compare"   
    特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
    strcmp 的原型为

    int strcmp_ (const char *str1,const char *str2)
    { 
    	int len = 0;
    	assert((str1 != '\0') && (str2 != '\0'));
    	while(*str1 && *str2 && (*str1 == *str2))
    	{
    		str1++;
    		str2++;
    	}
    	return *str1-*str2;
    }


    memset

    用法:#include <string.h>

    功能:把buffer所指内存区域的前count个字节设置成字符c。

    说明:返回指向buffer的指针。

    memset的原型为

    void * memset_(void* buffer, int c, int count)
    {
    	assert(buffer != NULL);
    	char* tmp=(char*)buffer;
    	while(count--)
    		*tmp++=(char)c;
    	return buffer;
    }

    strlen
    头文件:string.h
    格式:strlen (字符数组名)
    功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内
    说明:返回s的长度,不包括结束符NULL。
     

    strlen的原型为

    int strlen_(const char *str)
    {
    	int len = 0;
    	assert(str != NULL);
    	while(*str++)
    	{
    		len++;
    	}
    	return len;
    }


     memcmp

    原型:int memcmp(const void *buf1, const void *buf2, unsigned int count);  
    用法:#include <string.h>或#include<memory.h>   
    功能:比较内存区域buf1和buf2的前count个字节。
    说明: 该函数是按字节比较的。   
    例如: s1,s2为字符串时候
     memcmp(s1,s2,1)就是比较s1和s2的第一个字节的ascII码值;  
     memcmp(s1,s2,n)就是比较s1和s2的前n个字节的ascII码值;  
     如:char *s1="abc";  
     char *s2="acd";   
     int r=memcmp(s1,s2,3);   
     就是比较s1和s2的前3个字节,第一个字节相等,第二个字节比较中大小已经确定,不必继续比较第三字节了所以r=-1.

  • 相关阅读:
    eclipse3.2 汉化 汉化包下载
    JAXB 操作XML 与 Object
    具体解释三层架构图
    四个好看的CSS样式表格
    LinearGradient线性渲染
    JAVA wait(), notify(),sleep具体解释
    System.currentTimeMillis();
    nefu117 素数个数的位数,素数定理
    java jdk缓存-128~127的Long与Integer
    js正則表達式语法
  • 原文地址:https://www.cnblogs.com/byfei/p/3112169.html
Copyright © 2011-2022 走看看