• 締切済み

やってみてください

次の文字列において、任意の文字列を検索し、任意の文字列で置換するプログラムを作成せよ ただし、検索条件に当てはまらないときは以下の文字列をそのまま出力するものとする。 "acabcabbcb" if switch for while do-while 配列 をなるべく使う。 <実行結果1> 元の文字列   :acabcabbcb 検索する文字列 :ca 置換する文字列 :L 置換後の文字列 :aLbLbbcb <実行結果2> 元の文字列   :acabcabbcb 検索する文字列 :b 置換する文字列 :DFGH 置換後の文字列 :acaDFGHcaDFGHDFGHcDFGH <実行結果3> 元の文字列   :acabcabbcb 検索する文字列 :cabb 置換する文字列 :A 置換後の文字列 :acabAcb <実行結果4>(検索条件に当てはまらない時) 元の文字列   :acabcabbcb 検索する文字列 :asdf 置換する文字列 :w 置換後の文字列 :acabcabbcb

みんなの回答

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.4

わざわざプログラムなんて作らなくたってsed使えば簡単じゃ? 先人の知恵は使えと言うけれど、使い方を間違えてるようじゃしょうがない‥‥。

noname#245945
noname#245945
回答No.3

こんな感じでしょうか。 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char target[] = {'a','c','a','b','c','a','b','b','c','b','\0'}; char *lookup = argv[1]; char *replace = argv[2]; char *tp = target; char *sp; int lookup_length = strlen(lookup); while((sp = strstr(tp, lookup)) != NULL){ *sp = '\0'; fputs(tp, stdout); fputs(replace, stdout); tp = sp + lookup_length; } fputs(tp, stdout); return 0; }

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

あれ?前違う名前じゃありませんでした? yahoo知恵袋でも同じ質問してますよね? とりあえず、自分でやった分を見せ下さいね。

回答No.1

  ココは問題を出すサイトじゃないです。 貴方の判らない事を質問する場所ですよ。 判らない事を書いてください。  

関連するQ&A

  • やってみてください

    文字列を入力させ、入力した文字列の長さを出力させるプログラムを作成せよ。 if switch for while do-while 配列 をなるべく使う。 <実行結果> 文字列を入力してください society Length of "society" is 7

  • tryしてみてください

    入力した文字列(英語)を指定された文字数だけ後にスライドし文字列の暗号化を行うプログラムを作成せよ ただし、zの次はA、Zの次はaになるようにせよ。 if switch for while do-while 配列 をなるべく使う。 <実行結果> 暗号化する英文を入力してください society スライドする文字数を入力してください 5 暗号化後の文字列 HmztZsnAjwxnyD

  • 確認したいのでやってみてください

    0から50までの素数を列挙するプログラムを作成せよ。 素数→0,1を除く、2つしか約数がない数 if switch for while do-while 配列 をなるべく使う。 <実行結果> 0~50までの素数は以下となります 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

  • 文字列の置換

    文字列の置換 たとえば, if(abcd) という文字列があったときに,これを while(abcd){ に置換するにはどうすればいいでしょうか(同じような置換をしたいところが文章中にいくつもあるとします).つまり,文字列の一部をそのままにして置換するということです.いまの場合だと if( → while( はできたとしても, ) → ){ は,文章中に“)”がたくさんある場合は難しいですよね.wordなら,ワイルドカードを使って if(*) とすれば,検索はできるのですが,そのまま置換すると while(*){ となってしまい,*がそのまま残ってしまいます.どうにかできないでしょうか?

  • テキストファイルを直接置換する方法

    VBAに関する質問です。 複数のテキストファイルを読み込んで 指定した文字列を別の文字列に検索・置換してくれるプログラムを作りたいと考えています。 これをするためには一度 Set MyTxt = FSO.OpenTextFile(StrPath, 1) Do While MyTxt.AtEndOfStream = False hairetu(xxx) = MyTxt.ReadLine loop のようにしてテキストデータを全て配列に読み込み、 Replace関数で一つずつ検索・置換した後に Open StrPath For Output As #1 Print #1, hairetu(xxx) のようにしてファイルを出力し直すしかないですか? 配列に読み込まずに 既存のファイルを直接編集する方法を教えてください。

  • ワードのワイルドカードについて

    ワードのワイルドカードを使用して置換を行おうとしているのですがうまくいきません。 ¥に置き換えたいのですが、”指定できない範囲の番号”とでてきてしまいます。 元の文字列 かきくけこあいうえお 検索する文字列 かきく(*)あいうえお 置き換え後の文字列 (?) あいうえお\1 (?) 期待する置換後結果 \ あいうえおけこ \  ←¥で囲みたいのです。 (?)の部分に \\としたり、\0としたりGoogleで検索してみたのですが、見つけられませんでした。 ご存知の方がいらっしゃいましたら教えていただけないでしょうか? よろしくお願いいたします。

  • Excelの置換がうまく出来ません。

     Excelである文字列を検索しようとすると、ちゃんと検索できるのですが、それを別の文字列に「置換」しようとすると「一致するデータが見つかりません」のメッセージが出て置換できません。「一致するデータ」がちゃんと存在するにもかかわらずにです。  ところが「すべて置換」にするとちゃんとすべてその文字列が指定の文字列に置換出来てしまいます。  即ち、ちゃんと置換すべき文字列が存在するにもかかわらず「置換」だけが実行されないのです。  これってどうゆうわけでしょうか?  私としては、「すべて置換」ではなく、一つ一つ確認しながら文字列の置換を行いたいのですが・・・私のやり方が悪いのでしょうか?  尚、ここで言う「文字列」とは狭い意味のそれではなく、数値・記号を含む全ての文字と言う意味です。

  • テーブルを使った置換

    Access2002 Accessでクエリ実行時に特定の文字列を置換したいと思っています。 今までは置換する文字列が1つだけだったので、replace関数を使って直接置換する文字列を書いていたのですが、置換する文字列が今後増えてきそうなのでテーブルで管理したいと思っています。 置換用テーブル 元 ,置換後 000022,002078 000218,002403 000447,002703 クエリは単純な選択クエリなのですが、上記のようなテーブルを使ってクエリ実行時に文字を置換する方法がわかりません。 よろしくお願いします。

  • Exce置換lマクロについて教えてください。

    Exce置換lマクロについて教えてください。 置換画面を表示して、任意の文字を入力しすべて置換したいのですが可能でしょうか? (1)置換画面表示 (2)検索する文字列(初期値:aaa_111) (3)置換後の文字列(bbb_222) (4)すべて置換 教えてください。

  • 秀丸で正規表現を使って置換

    あるファイルに関して、このような置換を行いたいです。 abc/xxx,yyy,zzz.html ↓ abc/xxx.html xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で 「abc/」と「,」と「.html」は固定の文字列になります。 そこで、秀丸で開いて、正規表現による検索で、 「abc/.*,.*,.*.html」 として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。 置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。 秀丸の置換機能でこのようなことは可能でしょうか? 正規表現に関してあまり詳しくないので教えてください。