【发布时间】:2016-07-08 11:25:37
【问题描述】:
我正在用 C 语言编写一个程序,其中涉及 4 个选项的选择。 但是,我无法验证变量 Option 的值是否是 1、2、3 或 4 以外的字母或数字。当我输入字母时,它会继续循环打印语句而不是输入函数,我我无法继续我的程序。 有人可以告诉我我的代码有什么问题吗?
int Option;
while( (Option>4) || ( isalpha(Option) ) )
{
printf("Please select a valid option from the 4 options listed above! \n");
scanf(" %d",&Option);
}
【问题讨论】:
-
Option是否包含字符或整数值?在前一种情况下,您可能应该与'4'进行比较,而不是4。在后一种情况下,isalpha不会按照您的预期进行。 -
您需要检查scanf调用的返回值:
if (scanf("%d", &Option) != 1) { fprintf(stderr, "error in scanf on line %d.\n", __LINE__); exit(EXIT_FAILURE); } -
您不能使用
scanf同时输入数字(1、2、3、4、5、6,...)和字母('a','b',... 'A','B',...)。我建议您改为使用fgets()读取用户输入,然后解析输入。 -
感谢您的解释。我想我会听取你的建议并仔细阅读。 =)
标签: c while-loop alphabetical