2020.12.04 重寫字串操作函式

Got_Juice發表於2020-12-04

打牢基本功,衝!

學習程式碼

github原始碼

#include <stdio.h>
#include <string.h>

int my_strlen(char *p)
{
    char *len=p;
    while(*len!='\0')
    {
        len++;
    }
    return len-p;
}

char *my_strstr(char *haystack,char *needle)
{
    int len1=my_strlen(haystack);
    int len2=my_strlen(needle);
    int i,j;
    for(i=0;i<len1;i++)
    {
        for(j=0;j<len2;j++)
        {
            if(haystack[i+j]!=needle[j])break;
        }
        if(j==len2)return haystack+i;
    }
    return NULL;
}

int my_strcmp(char *s1,char *s2)
{
    int i=0;
    int len1=my_strlen(s1);
    int len2=my_strlen(s2);
    while(len1==len2)
    {
        if(s1[i]>s2[i])return 1;
        else if(s1[i]<s2[i])return -1;
        else if((s1[i]=='\0')&&(s2[i]=='\0'))return 0;
        i++;
    }
    if(len1>len2)return 2;
    if(len1<len2)return -2;
}

char *my_strcat(char *s1,char *s2,int n)
{
    int i=0;
    int len1=my_strlen(s1);
    int len2=my_strlen(s2);
    if((len1+len2)<n)
    {
        for(i=0;i<len2;i++)
        {
            s1[len1+i]=s2[i];
        }
        s1[len1+i]='\0';
    }
    else
    {
        printf("lack of space\n");
    }
    
}
char *my_strcpy(char *src,char *des,int n)
{
    int i=0;
    int len1=my_strlen(src);
    if(n>len1)
    {
        for(i=0;i<len1;i++)
        {
            des[i]=src[i];
        }
        des[i]='\0';
    }
    else
    {
        printf("lack of space\n");
    }
    
}
int main(void)
{
    char str1[]="assfdafsd4";
    char str2[100]="";
    
}

相關文章