Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で文字列内の特定の文字をすべて置き換える方法【サンプルコード付き】

この記事では、実行時に文字列を入力し、検索したい文字と置き換え後の新しい文字をコンソールから読み込んで、文字列内の該当する文字を置き換えるCプログラムを紹介します。すべての出現箇所を置き換えるパターンと、最初の出現箇所のみを置き換えるパターンの2種類を解説します。

プログラム1:すべての出現箇所を置き換える

以下は、文字列内に存在する指定した文字をすべて別の文字に置き換えるCプログラムです。

#include <stdio.h>
#include <string.h>
int main(){
    char string[100], ch1, ch2;
    int i;
    printf("enter a string : ");
    gets(string);
    printf("enter a character to search : ");
    scanf("%c", &ch1);
    getchar();
    printf("enter a char to replace in place of old : ");
    scanf("%c", &ch2);
    for(i = 0; i <= strlen(string); i++){
       if(string[i] == ch1){
          string[i] = ch2;
       }
    }
    printf("\n the string after replace of '%c' with '%c' = %s ", ch1, ch2, string);
    return 0;
}

プログラムの解説

forループで文字列を先頭から1文字ずつ走査し、検索対象の文字(ch1)と一致した場合に、その位置を新しい文字(ch2)で上書きします。strlen()で取得した文字列の長さ分だけ繰り返すため、文字列内のすべての出現箇所が置き換えられます。

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

enter a string: Tutorials Point
enter a character to search: i
enter a char to replace in place of old: %
the string after replace of 'i' with '%' = Tutor%als Po%nt
enter a string: c programming
enter a character to search: m
enter a char to replace in place of old: $
the string after replace of 'm' with '$' = c progra$$ing

プログラム2:最初の出現箇所のみ置き換える

次は、文字列内で最初に出現した文字のみを置き換えるCプログラムです。

#include <stdio.h>
#include <string.h>
int main(){
    char string[100], ch1, ch2;
    int i;
    printf("enter a string : ");
    gets(string);
    printf("enter a character to search : ");
    scanf("%c", &ch1);
    getchar();
    printf("enter a char to replace in place of old : ");
    scanf("%c", &ch2);
    for(i = 0; string[i]!='\0'; i++){
       if(string[i] == ch1){
          string[i] = ch2;
          break;
       }
    }
    printf("\n the string after replace of '%c' with '%c' = %s ", ch1, ch2, string);
    return 0;
}

プログラムの解説

このプログラムでは、一致する文字が見つかった時点でbreak文によってループを抜けます。そのため、置き換えられるのは文字列中で最初に出現した1か所だけで、それ以降の同じ文字はそのまま残ります。

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Run 1:
enter a string: Tutorial Point
enter a character to search: o
enter a char to replace in place of old: #
the string after replace of 'o' with '#' = Tut#rial Point
Run 2:
enter a string: c programming
enter a character to search: g
enter a char to replace in place of old: @
the string after replace of 'g' with '@' = c pro@ramming

注意点

なお、これらのコードで使用しているgets()関数はバッファオーバーフローを引き起こす危険があるため、現在では標準規格から削除され、非推奨となっています。実際の開発では、fgets()などの安全な入力関数を使用することをおすすめします。

  1. 【初心者向け】Pythonで文字列内の「a」をすべて「$」に置き換える方法

    文字列の中に含まれる特定の文字(ここでは「a」)を、別の文字(ここでは「$」)にすべて置き換えたいケースはよくあります。Pythonでは、文字列を1文字ずつ反復処理しながら「+=」演算子で新しい文字列を組み立てることで、この処理を実現できます。 サンプルコード 以下に、実際の実装例を示します。 my_str = Jane Will Rob Harry Fanch Dave Nancy changed_str = for char in range(0, len(my_str)): if(my_str[char] == a): changed_str += $

  2. Pythonで文字列内の各文字の出現回数を調べる方法【3つのアプローチ解説】

    この記事では、指定された文字列の中に、それぞれの文字が何回出現するかを求める方法について解説します。 問題設定: 1つの文字列が与えられたとき、その文字列に含まれる各文字の出現回数を求める必要があります。 ここでは、以下の3つのアプローチを順番に見ていきましょう。 アプローチ1:素朴な全走査(ブルートフォース) 最も基本的な方法は、文字列を1文字ずつループで走査し、辞書を使って出現回数を記録していくやり方です。すでに辞書に存在する文字であればカウントを1増やし、初めて登場した文字であれば新しくキーとして追加します。 コード例 test_str = Tutorialspoint # カウント用の