关于字符串的几个函数

来源:互联网 发布:'匿名短信软件 编辑:程序博客网 时间:2024/04/30 12:43

 1、Strcat函数原型如下:

char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{       char * address = strDest;             //该语句若放在assert之后,编译出错       assert((strDest != NULL) && (strScr != NULL)); //对源地址和目的地址加非0断言       while(*strDest)                 //是while(*strDest!=’\0’)的简化形式       {                              //若使用while(*strDest++),则会出错,因为++是不受循环              strDest++;              //约束的。所以要在循环体内++;因为要是*strDest最后指       }                              //向该字符串的结束标志’\0’。       while(*strDest++ = *strScr++) //是while((*strDest++ = *strScr++)!=’\0’)的简化形式       {              NULL;                  //该循环条件内可以用++,       }                             //此处可以加语句*strDest=’\0’;有无必要?       return address;               //为了实现链式操作,将目的地址返回}

以下是在VC6.0中调试的例子,函数名用strcata代替。

#include <stdio.h>#include <assert.h>char *strcata(char *strDest,const char *strScr){       char * address = strDest;       assert((strDest != NULL) && (strScr != NULL));       while(*strDest)       {              strDest++;       }       while(*strDest++ = *strScr++)       {              NULL;       }       return address;}int main(int argc, char *argv[]){       char str1[100]={"i love"};       char str2[50]={"China"};       printf("%s\n",strcata(str1,str2));       return 0;}

2、Strcpy函数原型如下:

char *strcpy(char *strDest, const char *strScr){            assert((strDest != NULL) && (strScr != NULL));      char *address = strDest;       while(*strScr)                    //是while(*strScr != ’\0’)的简化形式;       {                                  //此处更简洁的写法是:            *strDest++ = *strScr++;              //  while((*strDest++ = *strSrc++) != '\0') NULL;      }                                  *strDest = '\0'; //当strScr字符串长度小于原strDest字符串长度时,如果没有改语句,就会出错了。      return address; }


以下是在VC6.0中调试的例子,函数名用strcpya代替。
#include <stdio.h>#include <assert.h>char *strcpya(char *strDest, const char *strScr){       char *address = strDest;       assert((strDest != NULL) && (strScr != NULL));       while(*strScr)       {              *strDest++ = *strScr++;       }       *strDest = '\0';       return address;}int main(int argc, char *argv[]){       char str1[100]={"i love"};       char str2[50]={"China"};       printf("%s\n",strcpya(str1,str2));       return 0;}

3、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;}

以下是在VC6.0中调试的例子,函数名用strcmpa代替。

#include <stdio.h>#include <assert.h>int strcmpa (const char *str1,const char *str2){                  int len = 0;       assert((str1 != '\0') && (str2 != '\0'));       while(*str1 && *str2 && (*str1==*str2))       {              str1++;              str2++;       }       return *str1-*str2;}int main(int argc, char *argv[]){        char str1[100] = {"i love"};        char str2[50] = {"China "};        printf("%d\n",strcmpa(str1,str2));       return 0;}

4、Strlen函数原型如下:

int strlen(const char *str){       int len = 0;       assert(str != NULL);       while(*str++)       {              len++;       }       return len;}


以下是在VC6.0中调试的例子,函数名用strlena代替。

#include <stdio.h>#include <assert.h>int strlena(const char *str){       int len = 0;       assert(str != NULL);       while(*str++)       {              len++;       }       return len;}int main(int argc, char *argv[]){        char str1[100] = {"i love"};        char str2[50] = {"China "};        printf("%d\n",strlena(str1));       return 0;}



0 0