ユーザーから文字列を取得して配列に格納するプログラムを作成しようとしています。プログラムでは、5 つを超える名前を保存することはできず、名前ごとに 10 文字を超えないようにする必要があります。このプログラムをコンパイルできますが、実行してオプション「1」を選択すると、「Segmentation fault (core dumped)」というエラーが表示されます。プログラムは、オプション「2」の下に名前のリストも表示する必要があります。(ほとんどのコードは、iSelect != 3 の間実行される do-while ループに入れる必要があると思います。)
ここで何が間違っていますか?
コードは次のとおりです。
#include <stdio.h>
main() {
char cList[20][5];
char string[10];
int iNum = 0;
int iSelect = 0;
int i = 0;
int j = 0;
int k = 0;
printf("\n\n*** Friend List ***\n\nWhat will you do?\n\n1. Write a friends name in the list.\n2. Print out the names in the list.\n3. Quit\n---> ");
scanf("%d ", iSelect);
switch(iSelect) {
case 1:
// printf("\n\nWrite name nr %d (max 10 characters): \n", iNum);
scanf(" %s", &string);
for(i = 0 ; i < 10 ; i++) {
cList[i][iNum] = string[i];
}
iNum++;
break;
case 2:
for(j = 0 ; j <= iNum ; j++) {
for(k = 0 ; k < 10 ; k++) {
printf("%c", cList[k][j]);
}
}
break;
}
} //End of main()-function