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.

原文地址:https://www.cnblogs.com/byfei/p/3112169.html