重写c语言中的几个字符串函数

本文详细介绍了字符串的基本操作,包括字符串长度求取、字符串连接、字符串比较和字符串复制,并通过实例代码进行了具体演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        一、求字符串的长度

 

int myLength(const char *p){
 
 int count = 0;
 if(NULL==p){    //如果字符串为空 则直接返回0
        return 0;
 }
 while(*p!='\0'){  //判断字符串是否结束
        count++;
  p++;
       
 }
 return count;

}
void main(){
 char *ch = "good";
 int re = myLength(ch);
 printf("%d\n",re);
 
}


 

 二、连接两个字符串

char * strAdd( char *str1, const char *str2){
 if(str1 && str2){                                                   //判断有没有空地址
         int count = length(str1)+length(str2)+1;  
   char *resoult = (char *)malloc(count);             //重新分配一个新的空间
   char *all = resoult;
         while(*str1!='\0'){                                         //判断第一个字符串是否结束
              *resoult++ = *str1++;
   
   }
   while(*str2!='\0'){                                               //判断第二个字符串是否结束
              *resoult++ = *str2++;
    
   }
   *resoult='\0';
         *resoult = NULL;
   return all;
 }
 return NULL;
}
void main(){
 char *a = "hellow";
 char *b = "word";
 char *re = strAdd(a,b);
 printf("%s\n",re);
}

 三、比较两个字符串的大小

int strCampare(const char *str1,const char *str2){

 if(str1==NULL || str2==NULL){                   //判断地址是否为空

        return -2;                                              //若有空地址返回-2;
 }
    while (*str1!='\0'){
  if(*str1>*str2){                                        
            return 1;                                             //如果第一个字符串大,返回1
  }
  if(*str1<*str2){
           return -1;                                           //如果第二个字符串大,返回-1
  }
  str1++;
  str2++;
 }
 if(*str2!='\0'){
        return -1;                                                  //如果两个字符串相等 ,返回0
 }
 return 0;

}

 


void main(){
 char *a = "hellow";
 char *b = "word";
 int re = strCampare(a,b);
 printf("%d\n",re);
}

 

 

 四、复制字符串


char * strCopy(char *str1,char *str2){
 char *p = str1;
 if(*str2!='\0' && *str1!='\0'){                //如果两个字符串都不为空,
         str1 =str2;                                  //把第二个的地址赋值给第一个
 }   

 return str1;
}

void main(){
 char *a = "hiel";
 char *b = "word";
 printf("%s复制到%s的结果是\n",b,a);
 char * re = strCopy(b,a); 
 printf("%s\n",re);
 
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值