A君は、学校の宿題で2つの文字列を連結するstrcatの宿題に取り組んでいる。宿題は、名前を表す変数(name1、name2、name3)のそれぞれの文字列に、名字(familyname)の文字列を連結して表示するもので、A君は「リスト1」のプログラムを作った。A君は、おのおのの名前に名字を連結したつもりなので、「リスト2」の実行結果を期待したが、実際には、「リスト3」となった。なぜ、意図した通りに動作しなかったか、原因を推察せよ。なお、デバッグは、机上で考察すること。
/* StrcatPractice.c 名前連結プログラム 仕様: 名前を表すname1〜3のそれぞれに、名字を表すfamilynameを連結する */ #include <stdio.h> #include <string.h> int main(void) { // 名字 char familyname[] = "Yamada"; // 名前 char name1[] = "Ichiro"; char name2[] = "Ziro"; char name3[] = "Saburo"; // 連結 strcat(name1, familyname); strcat(name2, familyname); strcat(name3, familyname); printf("name1 = %s\n",name1); printf("name2 = %s\n",name2); printf("name3 = %s\n",name3); return 0; }
name1 = IchiroYamada name2 = ZiroYamada name3 = SaburoYamada
name1 = mada name2 = mada name3 = Saburoamada
Copyright © ITmedia, Inc. All Rights Reserved.