文字列の検索

char 配列を使った文字列の検索と置換です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. char 配列で文字列を定義して、キーワードを検索して、置き換えてみましょう。
    今回のキーワードは "red" で置き換える文字列は "purple" です。
  2. q = strstr(p,"red") で文字列を検索します。
    見つからないときは NULL がリターンされます。
  3. "red" が見つかった時は、直前までの文字列を des[] にコピーして "purple" を連結します。
    次の検索位置を "red" の次に設定して繰り返します。
        {   *q= '\0';
            strcat_s(des,256,p);
            strcat_s(des,256,"purple");
        }
        p=q+3   //for の中で行っています。
        
  4. 見つからなかったときは p から後の文字列を des[] にコピーして完成です。
  5. ソースプログラムです。
    /*★ 文字列の検索と置換     前田 稔 ★*/
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    
    char    sou[]= "red black white red  blue gray yellow";
    char    des[256]= "";
    char    *p,*q;
    
    void  main()
    {
        for(p=sou; (q=strstr(p,"red"))!=NULL; p=q+3)
        {   *q= '\0';
            strcat_s(des,256,p);
            strcat_s(des,256,"purple");
        }
        strcat_s(des,256,p);
        printf(des);
        _getch();
    }
    
  6. 実行結果です。
    purple black white purple  blue gray yellow
    
  7. この手の処理は char 配列よりも string を使う方が簡単です。
    STL のプログラムは STL で文字列の検索 を参照して下さい。
    C# のプログラムは 文字列の検索と置換 を参照して下さい。
    リンクがエラーになるときは「前田稔の超初心者のプログラム入門」から辿って下さい。

超初心者のプログラム入門(C/C++)