我正在尝试制作一个从用户那里获取字符串并将其存储在数组中的程序。该程序不应允许存储超过五个名称,并且每个名称不得超过十个字符。我可以编译这个程序,但是当我运行它并选择选项“1”时,出现错误“分段错误(核心转储)”。该程序还应在选项“2”下显示名称列表。(我想我必须将大部分代码放在一个 do-while 循环中,只要 iSelect != 3 就可以运行。)
我在这里做错了什么?
代码是:
#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