如何在C语言中使用strlen (), strcpy (), strcat()和strcmp()函数

  介绍

如何在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);> 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()函数