新しく質問する

やってみてください

役に立った:0件
  • 質問者:522522-2jp
  • 投稿日時:2009/05/23 17:41
  • 困り度:すぐに回答が欲しいです

次の文字列において、任意の文字列を検索し、任意の文字列で置換するプログラムを作成せよ
ただし、検索条件に当てはまらないときは以下の文字列をそのまま出力するものとする。
"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

この質問に回答する
このQ&Aは役に立ちましたか?(役に立った:0件)

回答(4件)

  • 参考になった:0件
  • 回答者:ts3m-ickw
  • 回答日時:2009/05/24 13:22

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

通報する

  • 参考になった:0件
  • 回答者:m_11
  • 回答日時:2009/05/24 11:01

こんな感じでしょうか。

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

通報する

  • 参考になった:3件
  • 回答者:zwi
  • 回答日時:2009/05/23 17:57

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

通報する

  • 参考になった:4件
  • 回答者:l4330
  • 回答日時:2009/05/23 17:43

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

 

通報する

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ