主菜单选择提示在子功能scanf(C)上收集,
我创建一个程序,其主菜单链接到其他一些功能。 这是主菜单代码
int main(){
int iMenuChoice,exit;
iMenuChoice=0;
exit =1;
while (exit !=0){
system("cls");
printf("**********Main Menu************n");
printf("*1) Cartesian Plane *n");
printf("*2) Number to Words *n");
printf("*3) b *n");
printf("*4) c *n");
printf("*5) d *n");
printf("*6) e *n");
printf("*7) Exit *n");
printf("*******************************n");
scanf("%d",&iMenuChoice);
switch (iMenuChoice) {
case 1:
Cartisian();
break;
case 2:
Num2Word();
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
system("cls");
printf("nnThank you for using our Programnn ");
exit = 0;
break;
default:
break;
}
}
getche();
}
所以我测试我的数字为单词函数提示用户输入(Int)。 但是当我输入数字时,函数会询问另一个数字(没有printf提示符只是一个等待数字输入的_),我们称这个数字为X.
功能完成转换后,程序将转到主菜单一秒钟,然后自动转到另一个功能。
我意识到神秘数字X在某种程度上被用作高级菜单输入! 我不知道我做错了什么。
这里是num2Word函数的代码。
int Num2Word()
{
int iWor,iOnes,iTens,iHundred,iThousand;
system("cls");
printf("Enter a number(max 3000)n");
scanf("%i n",&iWor);
if(iWor<=3001)
{
iOnes=iWor%10;
iWor=iWor/10;
iTens=iWor%10;
iWor=iWor/10;
iHundred=iWor%10;
iWor=iWor/10;
iThousand=iWor%10;
Thousand(iThousand);
Hundred(iHundred);
if(iTens!=1)
{
Tenty(iTens);
Ones(iOnes);
}
if(iTens==1)
Exception(iOnes);
}
else{
printf("beyond 3000");
}
getche();
return 0;
}
Tenty,Ones,百分之一千都使用Switch,结构与下面的代码相同:
int Ones(int x)
{
if(x!=0){
switch(x)
{
case 1:
printf("One");
break;
case 2:
printf("Two");
break;
case 3:
printf("Three");
break;
case 4:
printf("Four ");
break;
case 5:
printf("Five");
break;
case 6:
printf("Six");
break;
case 7:
printf("Seven");
break;
case 8:
printf("Eight");
break;
case 9:
printf("Nine");
break;
default:
break;
}
}
return;
}
由于我不能张贴图像,但生病尝试显示功能输出的样子
输入一个数字(最多3000):
619
//我按这里进入没有任何反应
3 //我必须输入另一个数字来显示转换,在这个例子中是3。
六百十九
之后,它会返回主菜单进行分割秒,然后直接进入Main()Switch(iMenuChoice)情况3。
没有神秘数字X或鬼魂:)
更改
scanf("%i n",&iWor);
至
scanf("%i",&iWor);
您在scanf格式字符串中的空白字符会忽略所有空白字符。 这就是为什么你被迫输入一个非空白字符的原因。
我意识到神秘数字X在某种程度上被用作高级菜单输入! 我不知道我做错了什么。
没有神秘数字X.代码中的问题是这一行:
scanf("%i n",&iWor);
这个scanf
忽略了空格字符。 在scanf
中将空格字符指定为指令时。 该指令可以在输入中匹配任意数量的空白,包括无。 这就是为什么你必须插入第二个“神秘”的价值。 根据scanf
文档,空白字符是一系列空白字符(空格,制表符,换行符等;请参阅isspace(3))。
要解决这个问题,你可以只使用%i
指令。 例如:
scanf("%i",&iWor);
文档:http://man7.org/linux/man-pages/man3/scanf.3.html
链接地址: http://www.djcxy.com/p/72173.html上一篇: Main Menu choice prompt is gathered even on sub Function scanf (C)