- ベストアンサー
C言語でプログラミング。(文字を置き換えるやり方)
scanfなどで入力した文字列(アルファベット)の中にある特定の文字を違う文字に置き換えるようなプログラムってどのように作ったらよいのでしょうか?? 例えば、(sという文字をtと言う文字に変える・・・sound→tound)などのように、入力した文字を置き換えて、もう一度表示するようにするには、どうしたらよいのでしょうか? 関数を使ってプログラムを作りたいと思っているのですが・・・ なにかヒントなどがあったらお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
返答がないので答えみたいなの書いちゃいます。 関数じゃないけど単純に・・・ #include <stdio.h> #include <string.h> int main(void) { char *text = "sound"; char *text2 = "souns"; char *p; printf("%s\n",text); while((p = strchr(text,'s')) != '\0') *p ='r'; printf("%s\n",text); printf("%s\n",text2); while((p = strchr(text2,'s')) != '\0') *p ='r'; printf("%s\n",text2); return 0; } で、いいんじゃない?
その他の回答 (5)
- jacta
- ベストアンサー率26% (845/3158)
> sという文字をtと言う文字に変える・・・sound→tound 全角文字に対応したいのであれば、 scanf("%ls", wcs); のようにワイド文字列として入力して処理する必要があるかと思います。 あとは、 const wchar_t *p = wcschr(wcs, L's'); if (p != NULL) *p = L't'; といった具合に置換を行います。 ちなみに、strchrもwcschrも、文字が見つからなかった場合は(ナル文字ではなく)空ポインタ定数(=NULL)を返します。
お礼
ありがとうございます。分かりやすくてためになりました!!
>>なにかヒントなどがあったらお願いします。 というわけでヒントだけにします。 1.BLUEPIXYさんのものにループをつける。 2.strchr関数は見つからなかったら'\0'を返す。 でいけると思います。
お礼
ありがとうございます!! とても参考になります。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#include <stdio.h> #include <string.h> int main(void){ char *text = "sound"; printf("%s\n",text); *strchr(text,'s')='r'; printf("%s\n",text); return 0; }
お礼
こうゆうやり方もあるんですね。 参考にさせていただきます。 ありがとうございます!!
- t_nojiri
- ベストアンサー率28% (595/2071)
fscanf()じゃなくstrcmp()とかの方が、考え方簡単ですね。 ちょっと間違えた関数を書いてしまいました。
お礼
そうだったんですか!!ありがとうございます。
- t_nojiri
- ベストアンサー率28% (595/2071)
ま、どういうアドバイスをすればいいのか分りませんが fscanf()とかで引っ掛けて、その文字列内のバッファを書き換えても良し、元のデータ壊したくないなら入力されたバッファ分mallocしてそれから書き換えても良し。(使い終わったら明示的にfree()する必要有りますが。) 好きに作ってください。但し、入力値はチェックすること(入力された文字列が、NULLポインタだったら処理しないとか)
お礼
ありがとうございます。参考にさせていただきます!!
お礼
ありがとうございます。 自分でもなんとか作ることができたのですが、今後の参考にさせていただきます!!