• ベストアンサー

プログラミングの問題なのですが、

プログラミングの問題なのですが、 文字列[black]と[dog]を異なった2つの配列に初期化して与え、 別の配列をさらに定義、その中に1つの文字列 [blackdog]として データを代入⇒表示する(出力例: black + dog = blackdog) というプログラムはどんなのになるか教えて下さい。 ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 始めは char str1[6]={'black'}; char str2[4]={'dog'}; char str3[9]; int i, ……; という感じでお願いします。

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

  • ベストアンサー
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.5

>ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。  #4 さんの sprintf() が「レベルの高い」として、#2 さんの「forループ」で書いてみました。  2つの「forループ」の仕組みに、微妙な違いがあることに注目して下さい。  char str1[6] = "black";  char str2[4] = "dog";  char str3[9];  int i, nn = 0;  for( i = 0; i < 6; i++ ){   if( '\0' == str1[ i ] ) break;   str3[ nn++ ] = str1[ i ];  }  for( i = 0; i < 4; i++ ){   str3[ nn++ ] = str2[ i ];   if( '\0' == str2[ i ] ) break;  }  printf( "%s + %s = %s\n", str1, str2, str3 );

komatulong
質問者

お礼

ご回答ありがとうございます。 最終的にまた考えて、 for(i=0;str1[i]!='¥0';i++){ str3[n]=str1[i]; n++; } for(i=0;str2[i]!='¥0';i++){ str3[n]=str2[i]; } という感じでもいいですよね?

その他の回答 (4)

回答No.4

こんなのでいいのかな? ※検証はしていない。 char str1[6] = "black"; char str2[4] = "dog"; char str3[9]; sprintf(str3 ,"%s%s",str1,str2);

komatulong
質問者

お礼

ご回答ありがとうございます。 そういう事だと思いますが、sprintfというのが何か知らないです。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

str1[]とstr2[]の初期化方法が誤っています。

komatulong
質問者

お礼

ご回答ありがとうございます。 そうでしたか。よく考えてみます。

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.2

>使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 一つ目のforループで、str1[]の内容をstr3[]に入れる。 二つ目のforループで、str2[]の内容をstr3[]に入れる。この時、入れる場所はstr1[]の内容を入れた後から入れる。 str2[]が入れ終わったらstr3[]に「文字列の最後」を表す「'\0'」を追加する。 str3[]を表示して終了。

komatulong
質問者

お礼

ご回答ありがとうございます。 何をすればこのプログラムができるのかが理解できました。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

言語が何かわかりませんね。C/C++と仮定すると。 strcpy(str3,str1); strcat(str3,str2);

komatulong
質問者

お礼

ご回答ありがとうございます。 C言語ですね。 strcpy、strcatとはなんでしょうか?