如何在C语言中使用strlen (), strcpy (), strcat()和strcmp()函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
strlen函数原型:<代码> unsigned int strlen (const char *); 代码>返回的是字符串中第一个\ 0之前的字符个数。
1。strcat函数原型<代码> char * strcat (char *桌子,const char * src);代码>进行字符串的拼接,将第二个字符串连接到第一个字符串中第一个出现\ 0开始的地方。返回的是拼接后字符的首地址。并不检查第一个数组的大小是否可以容纳第二个字符串。如果第一个数组的已分配的内存不够容纳第二个字符串,则多出来的字符将会溢出到相邻的内存单元。
2. strncat函数原型:<代码> strncat(桌子,src,最大尺寸)代码>功能跟strcat一致,不过它带有一个最大尺寸的参数,设置容纳的最大的字符长度。如在遇到\ 0之前达到了最大字符长度,则会只连接最大字符长度个数的字符。
3。拷贝字符串函数原型<代码> char *拷贝字符串(char *桌子,const char * src);> 代码将第二个字符串\ 0之前的字符复制到第一个内存地址内。返回的是复制后的字符串的首地址。有char *返回值是为了函数能够支持链式表达式,增加了函数的“附加值”。<代码> char [7]=癮bcdef", char b [5]=皒yz"; 代码>
拷贝字符串(a, b)函数当将后面的数组赋值给前面那个时侯除去五个元素后,从下标为5开始的元素仍旧是之前一个[5]的元素.
4 . <代码> strncpy (str1、str2 numbe) 代码>函数是将str2中的前数个字符赋给str1,或是将\ 0之前的字符赋给str1。
5。比较字符串函数原型<代码> int strcmp (const char * src1, const char * src2); 代码>进行两个字符串中从第一个开始的ASCII码的比较,遇到\ 0或者不一致时退出,如果前者大于后者返回1,小于返回1如果在两个中的任何一个的\ 0之前都保持一致,则返回0。当src或src遇到\ 0时即停止比较。比较字符串比较的是字符串,不是字符,字符之间的比较可以直接用==
6。<代码> strncmp (str1、str2 numbe) 代码>函数在比较字符串的基础上多了一个int参数,即指定比较前几个字符是否相等。
注意:对于strcat函数和拷贝字符串函数并没有进行边界大小的限定,所以在用时要注意是否足够内存。
对于内存问题:用memcpy函数更为安全。
memcpy函数原型<代码> void * memcpy (void * desc, const char * src, unsigned int数),代码>相对于拷贝字符串函数,memcpy函数并不是将\ 0前面的字符复制给desc,而是将前数个字符进行复制。
memcmp函数,函数原型:<代码> int memcmp (void *来,void * buf2, unsigned int数),代码>也是对两个字符串之前的数个字符进行比较。
例子:
# include# include //strlen unsigned int  strlenght (const char *, src) { ,unsigned int  len=0; ,断言(src !=0); ,而(* src + +) ,{ len才能+ +; ,} ,return 兰; }//strcat char *, strlink (char *,桌子,char *, src) { ,char * tmp=桌子; ,断言(桌子!=,NULL),和(src !=NULL)); ,而(*桌子+ +); ,* dest -; ,而(*桌子+ +=* src + +); return 才能,tmp; }//拷贝字符串 char *, strcopy (char *,桌子,const char *, src) { ,char * tmp=桌子; ,断言((桌子!=NULL),和(src !=NULL)); ,而(* src) ,{ *桌子+ +=*才能src + +; ,} ,* dest=& # 39; \ 0 & # 39;; ,return tmp; }//比较字符串 int strcompare (const char *, src1, const char *, src2) { ,int x=0; ,而(! (=x * src1 - * src2),,,, * src1) ,{ src1才能+ +; src2才能+ +; ,} ,如果(x> 0) 时间=x 才能;1; ,如果(x<0) 时间=x 才能;1; ,return x; } void main () { 加勒比海盗,char [100],=,“这# 39;s wonderful 天气! !“ ,char arr1[20],=,“小姐:我\ 0,好!“; ,char * arr2; ,printf (“% s的长度为:% d \ n",加勒比海盗,strlenght (arr)); ,printf (“% s的长度为:% d \ n", arr1, strlenght (arr1));=,,arr2  strlink (arr arr1); ,printf (“% s \ n % s \ n", arr2, arr); ,printf (“% s % s \ n % d \ n", arr1,加勒比海盗,strcompare (arr1 arr)); ,printf (“% s \ n % s \ n",加勒比海盗,strcopy (arr arr1)); } 如何在C语言中使用strlen (), strcpy (), strcat()和strcmp()函数