part06-字符串相关函数的手动实现

#include <stdio.h>
#include <string.h>
int Strlen(char* src){
    int i=0;
    while(*(src++)!='\0'){
        i++;
    }
    return i;
}
void Strcpy(char* dest,char* src){
    while(*src!='\0'){
        *dest=*src;
        dest++;
        src++;
    }
    *dest='\0';
}
int Strcmp(char* dest,char* src){
    while(*dest!='\0'&&*src!='\0'){
        if(*dest < *src)
            return -1;
        else if(*dest == *src){
            dest++;
            src++;
            continue;
        }else
            return 1;
    }
    //如果两个字符串前面部分全部相等
    if(Strlen(dest)<Strlen(src)){
        return -1;
    }else if(Strlen(dest)==Strlen(src)){
        return 0;
    }else
        return 1;
}
void Strcat(char* dest,char* src){
    while(*dest!='\0')
        dest++;
    while(*src!='\0'){
        *dest=*src;
        dest++;
        src++;
    }
    *dest = '\0';
}
char* Strstr(char* dest,char* src){
    int n;
    if(*src!='\0'){
        while(*dest!='\0'){
            for(n=0;*(dest+n)==*(src+n);n++){
                if(*(src+n+1)=='\0'){
                    return dest;
                }
            }
            dest++;
        }
        return NULL;
    }else
        return dest;
}
char* Strstr1(char* dest,char* src)
{
    int n;
    if(*src!='\0')
    {
        while(*(dest++)!='\0'){
            if(*dest!=*src)
                continue;
            else if(*dest==*src){
                for(n=1;n<Strlen(dest);n++){
                    if((*(dest+n)==*(src+n))&&(*(src+n)!='\0'))
                        continue;
                    else{
                        break;
                    }
                }
                if(n==Strlen(src))
                    return dest;
                else
                    return NULL;
            }
        }
        return NULL;
    }
    return NULL;
}
int main(){
    char arr[10]="123";
    char arr1[] = "jojoj";
    printf("Strlen=%d\n",Strlen("zjw"));
    Strcpy(arr,"jojo");
    printf("Strcpy=%s\n",arr);
    printf("Strcmp=%d\n",Strcmp(arr,arr1));
    Strcat(arr,arr1);
    printf("Strcat=%s\n",arr);
    char arr2[10]="123456ibm";
    char arr3[10]="46";
    printf("strstr=%s\n",strstr(arr2,arr3));
    printf("Strstr=%s\n",Strstr(arr2,arr3));
    printf("Strstr=%s\n",Strstr1(arr2,arr3));
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值