• ベストアンサー

C言語 プログラム

文字列a[]と文字列b[]があり、a[]に含まれるb[]の文字すべてを@に変更する関数mikan[]を教えてください。 また、関数mikan[]を用いて、2つの文字列a[]とb[](空白は含まない)を入力すると関数mikan[]によって変更されたa[]を表示するプログラムを教えてください。よろしくお願いします。 (例 a[] :"a+b+c=abc" b[] :"a=" 上記だったら a[] :"@+b+c@@bc"

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

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.2

こんな感じでしょうか。 環境によっては動かないかもしれません。 関数 mikan_r() は関数配列 mikan[] の要素です。 #include <stdio.h> #include <stdlib.h> #include <string.h> static void mikan_r(char*s,const char*p) {char *x;for(;*p;p++)while((x=strchr(s,*p)))*x=0100;} static void (* mikan[1])(char *,const char*)={mikan_r}; extern int main(int argc,char **argv) { char a[] = "a+b+c=abc"; char b[] = "a="; fprintf( stdout, "a[]:%c%s%c\n", 042, a, 042 ); fprintf( stdout, "b[]:%c%s%c\n", 042, b, 042 ); mikan[0]( a, b ); fprintf( stdout, "a[]:%c%s%c\n", 042, a, 042 ); return EXIT_SUCCESS; }

18782kaiak
質問者

お礼

動きました。 ありがとうございます。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

課題は自力で解きましょう。 少なくとも丸投げするのではなく「何がどうわからないのか」を説明できるところまで「自分が出来ることと出来ないこと」を分解しましょう。

関連するQ&A