程序参数说明如下: 创建一个程序,允许用户输入最多五个 friend 的名字。使用二维数组存储 friend 的名字。输入每个名字后,用户应该可以选择输入另一个名字或打印出一份报告,显示到目前为止输入的每个名字。
我的问题是它将两个单词的名称存储为两个单独的名称,并且另外打印菜单选项两次。我似乎无法弄清楚这一点,因此我们将不胜感激。
代码如下:
包括
int main(void)
{
char cName[5][21]= {0};
int x=0;
int iPick;
printf("Enter the name of 5 people\n\n");
for(x=0;x<=5;x++){
printf("Enter name %d:", x+1);
scanf("%s", cName[x]);
printf("\n\nWould you like to add another name or view current names stored?\n");
printf("1)\tAdd another name\n");
printf("2)\tView names stored\n");
scanf("%d", &iPick);
switch(iPick){
case 1:
break;
case 2:
for(x=0;x<=5;x++){
printf("\nName %d is %s\n",x+1, cName[x]);
}
}
}
return 0;
}
最佳答案
scanf() 对空白很敏感。它倾向于在缓冲区中保留空白之后的任何内容,并将其放入下一个可用变量中。
这将导致循环在没有用户输入的情况下运行两次。基本上它第一次完成循环,然后它看到 stdin 缓冲区中有东西,所以 scanf 自动拾取它并将它用作下一个变量,所以菜单第二次打印......因为程序认为您输入了两个不同的名称,而不是一个带有空格的名称。
关于c - 简单的 C 程序用户输入 5 个 friend 的名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20334673/