web-dev-qa-db-ja.com

char配列の文字または部分文字列を置き換える標準関数?

文字列内のすべての文字を別の文字で置き換える標準ライブラリの関数が必要です。

また、文字列内のすべての部分文字列を別の文字列で置き換える標準ライブラリの関数も必要です。

標準ライブラリにそのような関数はありますか?

7
MOHAMED

それを行う直接的な機能はありません。 strchrを使用して、次のように記述する必要があります。

char* replace_char(char* str, char find, char replace){
    char *current_pos = strchr(str,find);
    while (current_pos){
        *current_pos = replace;
        current_pos = strchr(current_pos,find);
    }
    return str;
}

文字列全体については、 この回答された質問 を参照します

17
Superlokkus

標準ライブラリにはそのような関数はありません。

単一の文字を置き換える場合はstrchrを、部分文字列を置き換える場合はstrstrを使用して、独自のロールを簡単にロールできます(後者は少し複雑になります)。

int replacechar(char *str, char orig, char rep) {
    char *ix = str;
    int n = 0;
    while((ix = strchr(ix, orig)) != NULL) {
        *ix++ = rep;
        n++;
    }
    return n;
}

これは、置き換えられた文字の数を返し、char自体を置き換えても影響を受けません。

5
Serge Ballesta