自己實現字符串處理函數



/*
 實現字符串處理函數
 字符串長度獲取strlen
 字符串連接   strcat
 字符串比較   strcmp
 字符串查詢   strfind(char * a,char * b); 返回字符串b在字符串a的位置
 "hello nihao","nni"  6,如果不存在返回-1
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


//字符串長度獲取strlen
int mystrlen(char * mystring);
// 字符串連接   strcat
static char* mystrcat(char * mystring1,char * mystring2);
//字符串比較   strcmp
int mystrcmp(char * mystring1,char * mystring2);
//字符串查詢   strfind(char * a,char * b); 返回字符串b在字符串a的位置
int strfind(char * mystring1,char * mystring2);




int main(int argc, const char * argv[])
{


    
    static char *a = {"asdfgbnf"};
    static char *b = {"fg"};
    
    int l = mystrlen(a);
    printf("\n字符串長度爲:%d ",l);
    
    mystrcmp(a,b);
    
    //strfind(a,b);
    printf("\n%d",strfind(a,b));
    
    char * str = mystrcat(a,b);
    printf("\n字符串連接後爲%s",str);
    
    return 0;
}






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




static char* mystrcat(char mystring1[],char mystring2[])
{
    int i = 0;
    int j = 0;
    
    char *mystring;
    mystring= (char*)malloc(sizeof(char)*(mystrlen(mystring1)+mystrlen(mystring2)));
    
    while(mystring1[i] !='\0')
    {
        mystring[i] =  mystring1[i];
        i++;
    }
    while(mystring2[j] != '\0')
    {
        mystring[i+j]=mystring2[j];
        j++;
    }
    mystring[i+j]='\0';
    return (mystring);
    
    free(mystring);
}




int mystrcmp(char * mystring1,char * mystring2)
{
    int i=0;
    while (1) {
        
        if(mystring1[i]==mystring2[i])
        {
            if(mystring1[i]=='\0')
            {
                printf("\n兩個字符串相等");
                return 0;//兩個字符串相等
            }
            i++;
        }else
        {
            if(mystring1[i]>mystring2[i])
            {
                printf("\n字符串1>字符串2");
                return 1;
            }
            else
            {
                printf("\n字符串1<字符串2");
                return -1;
            }
        }
    }
}




int strfind(char * mystring1,char * mystring2)
{
    int set = 0; //返回的字符串位置
    int n = 0;   //連續相同字符個數
    int l = mystrlen(mystring2);
    for (int i = 0; mystring2[i] != '\0'; i++)
    {
        
        for (int j = 0; mystring1[j] != '\0'; j++)
        {
            if (mystring1[j]==mystring2[i])
            {
                set = j;
                n++;
                i++;
                if (n == l)
                {
                    return (set - n + 1);
                }
                
            }else
            {
                set = -1;
            }
        }
    }
        return set;
}









發佈了32 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章