一个初学者的问题
# include <stdio.h>
void help(void);
int main(void)
{
char ch1,ch;
do
{
printf("请输入您需要的服务:");
scanf("%c", &ch1);
if (ch1=='Q'||ch1=='q')
break;
if (ch1=='h'||ch1=='H')
help();
printf("是否继续?(Y/N)\n");
scanf("%c", &ch);
printf("\n");
}while(ch=='y'||ch=='Y');
return 0;
}
void help(void)
{
printf("1,我晕\n");
printf("2.我狂晕\n");
printf("3.我狂狂晕\n");
printf("4.我狂狂狂晕\n\n");
}
这个是菜单的不断选择是否循环,按理来说当我输入h时,会再提示我是否继续,然后再要我输入ch的值,但为什么在我这里不行?输入完ch1的值后就直接退出了?就好像我只输入了一个h,它把h赋值给ch和ch1这两个参数了。
[解决办法]
# include <stdio.h>void help(void);int main(void){ char ch1,ch; do { printf("请输入您需要的服务:"); scanf("%c", &ch1); getchar(); if (ch1=='Q'||ch1=='q') break; if (ch1=='h'||ch1=='H') help(); printf("是否继续?(Y/N)\n"); scanf("%c", &ch); getchar(); printf("\n"); }while(ch=='y'||ch=='Y'); return 0;}void help(void){ printf("1,我晕\n"); printf("2.我狂晕\n"); printf("3.我狂狂晕\n"); printf("4.我狂狂狂晕\n\n");}
[解决办法]
因为你输入h之后按了一个回车,于是第二个scanf时ch获得的是这个回车,于是循环结束。
解决办法:
在scanf("%c", &ch)的%前加一个空格,即scanf(" %c", &ch)来跳过这个回车。
或者
在scanf("%c", &ch)之前加一句getchar();“吃掉”前面的回车。