//文字列関数を実装独立した 書式#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); }