實現自己的字符串函數

實現自己的字符串函數

因爲在面試的時候,很多公司是不允許使用C語言裏的庫函數的,這就要求我們要自己實現一些函數功能。在這裏,我向大家分享一下我寫的關於字符串的函數。雖然簡單,卻很實用。

my_strcmp(strcmp);

int  my_strcmp(char *dest ,char *src)
{
    
    while(*dest != '\0' && *src != '\0')
    {
       
        if(*dest > *src)
        {
            return (-1);
        }
        else if(*dest < *src)
        {
            return (1);
        }

        dest ++;
        src ++;
    }

    if(*dest == '\0' && *src != '\0')
    {
        return (1);
    }
    else if(*dest != '\0'  && *src == '\0')
    {
        return (-1);
    }
    else
    {
        return 0;
    }
    
}

my_strcpy(strcpy) ;

char * my_strcpy(char *dest ,char *src)
{
    char *temp = dest;

    while(*src != '\0')
    {
        *dest = *src;
         dest ++;
         src ++;
    }

    *dest  = '\0';
    return temp;
}

my_strcat(strcat);

char * my_strcat(char *dest ,char *src)
{
    int len = strlen(src);
    int i = 0;
    char *temp = dest;
   
    while(*temp != '\0')
    {
         temp ++;
    }
    
    while(i < len)
    {
        *temp = *src;
        temp ++;
        src ++;
        i ++;
    }

    *temp ='\0';
    
    return dest;
}

my_strchr(strchr);

char *  my_strchr(char * str , char ch)
{

    while(*str != '\0' )
    {
       
        if(*str  == ch)
        {
            return str;
        }

        str ++;

    }

    return NULL;
}

my_strlen(strlen);

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

my_strstr(strstr);

char * my_strstr(char *str , char * deset)
{
    int len_deset = strlen(deset);
    
    int i = 0;
    while(*str != '\0')
    {

        for(i = 0 ; i < len_deset ; i ++)
        {
            if(*(str + i) != * (deset + i))
            {
                break;
            }

            return str;
        }

        str ++;
    }

    return NULL;
}

my_strtok(strtok);

char * my_strtok(char *str , char *delim)
{
    int len_delim = strlen(delim);

    char * temp = str;
    static char * flag;

    int i = 0;

    if(str != NULL)
    {

        while(*temp != '\0')
        {
    
            for(i = 0 ; i < len_delim ; i++)
            {
                if(*(temp + i) != *(delim + i))
                {
                    break;
                }
            }

            if(i == len_delim)
            {
                *temp = '\0';
                flag = temp;
                return str;
            }

            temp ++;

        }

        return NULL;

    }
    else
    {
        temp = flag + 1;
        char *ch = temp;

        if(*delim == '\0')
        {
            return ch;
        }

        while(*temp != '\0')
        {
    
            for(i = 0 ; i < len_delim ; i++)
            {
                if(*(temp + i) != *(delim + i))
                {
                    break;
                }
            }

            if(i == len_delim)
            {
                *temp = '\0';
                flag = temp;
                return  ch;
            }

            temp ++;
        }
        return ch;
    }

    
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章