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.