#navi(../)

* 指定した文字列に置換するCサンプルコード [#abb380dc]
指定した文字を指定した文字に置換するCサンプルコードを紹介します。~

#contents
#htmlinsertpcsp(c-top.html,c-sp.html)

* 関連記事 [#j78c3918]
-[[文字列をコピーする・strcpy>文字列/文字列をコピーする・strcpy]]
-[[文字列内の文字を1つずつ表示する>文字列/文字列内の文字を1つずつ表示する]]
-[[指定した区切り文字で文字列を分割する・strtok>文字列/指定した区切り文字で文字列を分割する・strtok]]
-[[文字列置換のCサンプルコード>文字列/文字列置換のCサンプルコード]]
-[[小文字を大文字に変換する・toupper>文字列/小文字を大文字に変換する・toupper]]
-[[大文字を小文字に変換する・tolower>文字列/大文字を小文字に変換する・tolower]]


* 置換関数 [#t6acb6c5]
本Cサンプルコードでは、strrep関数を作成しています。~
strrepの仕様は以下の通りです。
-書式
 int strrep(char *src, char *before, char *after)
-戻り値~
関数の制限事項として、同じ文字数の置換しか行いません。~
置換前の文字数、置換後の文字数の文字列長が異なる場合は-1を返却します。~
置換ができた場合は置換した数を返却します。
-引数~
1つ目: 置換する文字列~
2つ目: 置換前文字列~
3つ目: 置換後文字列~

* 置換関数のCサンプルコード [#c407c3e8]
&ref(strrep.c); (改行コードLF)
 #include <stdio.h>
 #include <string.h>
 
 int strrep(char *src, char *before, char *after)
 {
     char *p = NULL;
     int i = 0;
 
     if(strlen(before) != strlen(after)) { return -1; }
 
     p = strstr(src, before);
     while (p != NULL) {
         strncpy(p, after, strlen(after));
         p = p + strlen(after);
         i++;
         p = strstr(src, before);
     }
 
     return i;
 }
 
 int main(void)
 {
     char s[] = "abcdefabcdefabcdefabcdef";
     int i;
 
     printf("BEFORE: %s\n", s);
     i = strrep(s, "abc", "ABC");
     if (i != -1) {
       printf("AFTER:  %s\n", s);
       printf("Number of Convert : %d\n", i);
     }
 
     return 0;
 }

以下、コンパイルし実行した時の結果です。
 $ gcc strrep.c -o strrep
 $ ./strrep 
 BEFORE: abcdefabcdefabcdefabcdef
 AFTER:  ABCdefABCdefABCdefABCdef
 Number of Convert : 4

以上、文字列置換のCサンプルコードでした。

#htmlinsertpcsp(c-btm.html,c-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS