みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

プログラミングの問題なのですが、
文字列[black]と[dog]を異なった2つの配列に初期化して与え、
別の配列をさらに定義、その中に1つの文字列 [blackdog]として
データを代入⇒表示する(出力例: black + dog = blackdog)
というプログラムはどんなのになるか教えて下さい。

ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。
始めは
char str1[6]={'black'};
char str2[4]={'dog'};
char str3[9];
int i, ……; という感じでお願いします。

投稿日時 - 2010-05-21 18:42:26

QNo.5911473

すぐに回答ほしいです

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

>ただし、使えるのは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 );

投稿日時 - 2010-05-22 07:23:18

お礼

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

投稿日時 - 2010-06-05 09:58:46

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

こんなのでいいのかな?
※検証はしていない。

char str1[6] = "black";
char str2[4] = "dog";
char str3[9];

sprintf(str3 ,"%s%s",str1,str2);

投稿日時 - 2010-05-21 21:24:48

お礼

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

投稿日時 - 2010-06-05 10:09:23

ANo.3

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

投稿日時 - 2010-05-21 19:22:02

お礼

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

投稿日時 - 2010-06-05 09:52:52

ANo.2

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

投稿日時 - 2010-05-21 19:20:23

お礼

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

投稿日時 - 2010-06-05 10:07:38

ANo.1

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

投稿日時 - 2010-05-21 19:16:51

お礼

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

投稿日時 - 2010-06-05 10:02:10

あなたにオススメの質問