• ベストアンサー

C言語でプログラミング。(文字を置き換えるやり方)

scanfなどで入力した文字列(アルファベット)の中にある特定の文字を違う文字に置き換えるようなプログラムってどのように作ったらよいのでしょうか?? 例えば、(sという文字をtと言う文字に変える・・・sound→tound)などのように、入力した文字を置き換えて、もう一度表示するようにするには、どうしたらよいのでしょうか? 関数を使ってプログラムを作りたいと思っているのですが・・・ なにかヒントなどがあったらお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#16765
noname#16765
回答No.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; } で、いいんじゃない?

bonkare-
質問者

お礼

ありがとうございます。 自分でもなんとか作ることができたのですが、今後の参考にさせていただきます!!

その他の回答 (5)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

> sという文字をtと言う文字に変える・・・sound→tound 全角文字に対応したいのであれば、 scanf("%ls", wcs); のようにワイド文字列として入力して処理する必要があるかと思います。 あとは、 const wchar_t *p = wcschr(wcs, L's'); if (p != NULL)  *p = L't'; といった具合に置換を行います。 ちなみに、strchrもwcschrも、文字が見つからなかった場合は(ナル文字ではなく)空ポインタ定数(=NULL)を返します。

bonkare-
質問者

お礼

ありがとうございます。分かりやすくてためになりました!!

noname#16765
noname#16765
回答No.4

>>なにかヒントなどがあったらお願いします。 というわけでヒントだけにします。 1.BLUEPIXYさんのものにループをつける。 2.strchr関数は見つからなかったら'\0'を返す。 でいけると思います。

bonkare-
質問者

お礼

ありがとうございます!! とても参考になります。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#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; }

bonkare-
質問者

お礼

こうゆうやり方もあるんですね。 参考にさせていただきます。 ありがとうございます!!

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

fscanf()じゃなくstrcmp()とかの方が、考え方簡単ですね。 ちょっと間違えた関数を書いてしまいました。

bonkare-
質問者

お礼

そうだったんですか!!ありがとうございます。

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

ま、どういうアドバイスをすればいいのか分りませんが fscanf()とかで引っ掛けて、その文字列内のバッファを書き換えても良し、元のデータ壊したくないなら入力されたバッファ分mallocしてそれから書き換えても良し。(使い終わったら明示的にfree()する必要有りますが。) 好きに作ってください。但し、入力値はチェックすること(入力された文字列が、NULLポインタだったら処理しないとか)

参考URL:
http://www.orchid.co.jp/computer/cschool/str1.html
bonkare-
質問者

お礼

ありがとうございます。参考にさせていただきます!!

関連するQ&A