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.