第5章 演習問題1 ~2次元配列を使う~
~~~~~~ 回答例 ~~~~~~
#include <stdio.h>
#include <string.h>
#define PERSON_COUNT 21 /* 新人の人数 */
#define MAX_LENGTH 256 /* 最大文字列長 */
(1)
void main()
{
char shinjinName[PERSON_COUNT][MAX_LENGTH + 1];
int cnt;
int len;
/**
* 新人の人数分ループして、名前を入力してもらう
* ただし、空リターンはエラーとして扱う
*/
for (cnt = 0; cnt < PERSON_COUNT; cnt++) {
printf( "%d人目の名前を入力して下さい。\n", cnt+1 );
gets( shinjinName[cnt] );
len = strlen( shinjinName[cnt] );
(2)
if (len == 0) {
printf( "空リターンはエラーとして、途中終了です。\n" );
break;
}
}
/**
* 新人の名前一覧を表示する
*/
printf("―――― 新人名前一覧 ――――\n");
for (cnt = 0; cnt < PERSON_COUNT; cnt++) {
printf( "%d人目:%s\n", cnt+1, shinjinName[cnt] );
}
}
まず、(1)の部分を説明します。いきなり、見たことのない記述が出てきましたね。 これは、それほど難しいことではありません。 全てのPERSON_COUNTという記述を、21という記述に置き換えろという命令になります (注17) 。
char shinjinName[PERSON_COUNT][MAX_LENGTH + 1]; の記述は、
char shinjinName[21][257]; と全く同じことになります。
わざわざ、#defineなんてものを使う理由の一つは、プログラムを見やすくするためです。 ただの数字の21よりも、人間にわかりやすい名前の付いている方が、親切なプログラムと言えましょう。
もう一つの理由は、PERSON_COUNTを21から22に変更したくなった時に、 1カ所を直すだけで良いために、あとあと便利になります。
< 前のページへ 次のページへ >-
IS 559680 / ISO27001
認証範囲 本社情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社品質方針







