カスタム実装の文字列関数

//文字列関数を実装独立した
書式#include <stdio.hに> 
する#include <stdlib.h>に含ま
書式#include <string.hの> 
////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////// 
ボイドmyStrrev(するchar * P){//文字列反転
    INT長=のSTRLEN(P); 
    int型TMP = 0; 
    のための(INT I = 0、I <長さ/ 2; Iは++){ 
       TMP = P [I]、
       P [I] = P [I-長さ- 1]、
       P [。-length-I 1] TMPを=; 
    } 
} 
ボイドmain11(){/ /文字列反転
    チャーSTR [18である] = "中国グレートは"; 
    // strrev(STR); 
    myStrrev(STR); 
    のprintf( "%S \のN-"、STR); //のSi anihC taerg
 
}
    printf( "%sのを\ n"、STR)。// CHINAは素晴らしいです
    myStrupr(STR)。 
    // strlwr(STR); 
    myStrlwr(STR); 
    のprintf( "%S \のN-"、STR); //中国グレートIS 
} 

/// ////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////////////////// 
INT myStrlen(するchar * P){//文字列の長さを見つける
    INTをI = 0; 
    しばらく{(* P = '\ 0'!)
        P ++; 
        私は++; 
    } 
    リターン私は、
} 
無効main13(){//文字列の長さを見つける
    のchar STRを= "中国は素晴らしいです" [18れる]; 
    のprintf( "%Dの\のN-"、strlenを(STR)); // 14 
    のprintf( "%Dの\のN-"、myStrlen(STR)); // 14 
}

////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////// 
無効myStrcpy(DESTチャー*、CHAR *出典){ //文字列のコピー要求
    IF(DEST == NULL ||出典== NULL){ 
        リターン; 
    } {他に
        しばらく(出典= NULL!){ 
            *ソース* = DEST; 
            DEST ++; 
            ソース++; 
        } 
        * DEST =「\ 0 '; DEST // [0] =' \ 0「; 
    } 
} 
ボイドmain14(){//検索文字列がコピー
    チャー0009 = 18である"中国グレートは"; 
    CHAR STR2 [20である]; 
    // strcpyの(STR2 、0009); 
    myStrcpy(STR2、0009); 
    のprintf( "%S \のN-"、STR2)。//中国は偉大です
}


////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////// 
ボイドmyStrcat(CHAR * DEST、CHAR *ソース){ //求字符串连接
    IF(DEST == NULL ||ソース== NULL){ 
        返します。
    }他{ 
        //のchar * P =(CHAR *)のrealloc(DEST、strlenを(DEST)+ STRLEN(ソース)+1)。
        INT destlenを= STRLEN(DEST)。
        DEST = DEST + destlenを。
        (!*ソース= '\ 0'){しばらく
            * DEST = *ソース。
            DEST ++; 
            ソース++; 
        } 
        * DEST = '\ 0'; // DEST [0] = '\ 0'; 
    } 
} 
ボイドmain15(){//求字符串连接
    チャー0009 [18] = "中国であります"。 
    チャーSTR2 [20] = "すばらしいです"。
    strcatは//(STR1、STR2); 
    myStrcat(STR1、STR2); 
    のprintf( "%S \のN-"、STR1); //中国グレートIS 
} 

//////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////// 
のchar * myStrchr(のchar * strの、char型のCH){//文字を見つけるために
   しばらく(* STR!= '\ 0'){ 
       (IF == CH STR *){ 
           STRを返す; 
       } 
       STR ++; 
   } 
    戻りNULL; 
} 
ボイドmain16(){//文字検索
    チャーSTRを[18れる] = "中国グレートは"; 
    CHAR CHは= 'A'; 
    char型* P = strchr(STR、CH); //その戻り位置を見つけ、ヴァン見つからないリターンNULL 
    のprintf( "%S \ N-"、P)。// aが素晴らしいです 
    のprintf( "%Sの\のN-"、P)を、// aが素晴らしいです
    myStrchr = P(STR、CH); 
} 

//////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////// 
int型myStrcmp(CHAR * 0009、CHAR * STR2){ // 文字を比較
   しながら(* 0009 == STR2){ 
       IF(* 0009 == '\ 0' && * STR2 == '\ 0'){ 
           ;戻り0 
       } 
       STR1 ++; 
       STR2を++ ; 
   } 
    戻り値-1; 
} 
無効main17(){//文字比較
    のchar * STR1 = "中国グレートは"; 
    のchar * str2を= "中国グレートは"; 
/ * IF(STR1 == str2の){// C言語そのような文字列があり、str1はSTR2とアドレスを比較することはできません
        。のprintf( "平等")
    } * / 
    IF(strcmpの(STR1、STR2)== 0){ 
        ;のprintf( "等価")
    } 
    IF(myStrcmp(STR1、STR2)== 0){ 
        のprintf( "等価"); 
    } 

} 


///////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////// 
のchar * myStrstr(STR1チャー*、* CHAR STR2){//文字列は以下の表法、アレイ状に表されることができる見つける
    チャー* P = STR1 ; // * pを無効にすることができ、ポインタを初期化し、ボイドポインタ型は、任意の型に変換することができる
    //するchar * P =(チャー*)P; 
    CHAR * STR2 = str2Begin; 
    ながら(* 0009 = '\ 0'!){ 
        P = STR1; //は後リターンに登場str1はstr2の中で最初の文字の位置を維持するために
        STR2 = str2Begin; // 
        しばらく(* STR2のSTR1 == * || * str2を== '\ 0') {// * str2を==「\ 0 」 を返すpを分析する場合、データ比較の最後のビットを、防ぐために無限ループに入ることができます 
             場合(* STR2 ==「\ 0 」){ 
                 Pを返す; 
             } 
            STR2 ++; // str1はstr2の最初の文字が後退に等しい続け
            STR1 ++を; 
        } 
        str1が= P; //それをお見逃しなくステップは、サブストリングと比較する過程で、str1が大きい戻され
        STR1を++; //メインストリームに見つからない後退し続ける

    } 

} 
メインボイド(){//文字列検索
    文字を* 0009 = " Chiniissは素晴らしいです"; 
    charが* STR2は=" IS "; 
    のchar * P = STRSTR(STR1、STR2); 
    のprintf(" %S \ N- "P); 
    のchar * MYP = myStrstr(STR1、STR2); 
    のprintf(" S%\ N-」、MYP); 
}

 

おすすめ

転載: www.cnblogs.com/luoxuw/p/11334601.html