ANSI C字符串相关的实现

来源:互联网 发布:c语言面试题目及答案 编辑:程序博客网 时间:2024/05/16 23:46

1 strlen

/*

原型:size_t strlen(const char *s)

功能:获取字符串s的长度

说明:

*/

int stringlen(const char *s)
{
       
int i=0;
       
while(*s++)i++//只能是*s++,不能++*s,因为s是const char*
       
return i;
}

 

2 strcmp

/*

原型:extern int strcmp(char *s1,char * s2);

功能:比较字符串s1s2

说明:

        s1<s2时,返回值<0

        s1=s2时,返回值=0

        s1>s2时,返回值>0

*/

int stringcmp(char *s1,char *s2)
{
       
while(*s1||*s2) //如果S1和S2比较完毕, 跳出循环;
       {
              
if(*s1-*s2) //判断S1和S2对应的字符是不是不同;
                     return *s1-*s2; //如果不同,返回S1和S2的ASCII之差;
              else  // 如果相同,让指针指向S1和S2的下一个字符比较
              {
                     s2
++
                     s1
++;
              }

       }

       
return 0// S1和S2相等的时候返回0;
}

 

3 strcopy

/*

原型:char *strcpy(char *dest, const char *src);

功能:拷贝字符串,将src拷到dest

说明:返回的是dest字符串的首地址

*/

char* stringcpy(char* strDest, const char* strSrc)
{
 assert((strDest!=NULL) && (strSrc !=NULL));   //使用断言来防止出错
 char* strAddr = strDest;       //保存返回指针
 while( ((*strDest++=*strSrc++) != '/0') );

 return strAddr;
}
 

原创粉丝点击