扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
我在写项目的时候经常遇到要重复程序的项目,若此时输入字母(本应输入数字)就会报错,困扰我很久,因此想了一下解决办法,希望能帮到大家,也希望有大神指出我的错误并在评论区留下您的观点,很感谢您的阅读!
由于我主要用switch case语句,所以以下的解决办法皆与其相关,其他的输入场景也与其相似!
不超过9种情况时,可以直接case’数字’,注意使用单引号!!!!
int main()
{chindex++;
}
//index=1时进入,应为只有一位数字,case0-9的情况
if (index=1)
{char a = input[0];
switch (a)
{case '1':
printf("成功!\n");
break;
case '2':
printf("再次成功!\n");
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
}
//注意有两种输入错误的情况,均要进行说明
else
{printf("输入错误,请重新输入!\n");
}
return 0;
}
2.case情况>=10思路:使用函数和strcmp来判断,因为不能直接比较字符串是否相等
//自定义函数部分,注意数字要用双引号!!!!!!!!!
int Judge(char input[])
{if (strcmp(input, "1") == 0)
{return 1;
}
else if (strcmp(input,"12")==0)
{return 12;
}
else if (strcmp(input, "11") == 0)
{return 11;
}
else if (strcmp(input, "0") == 0)
{return 0;
}
//这个值是随机赋的,目的是让主函数中的大while循环一直进行下去。
else
{return 100l;
}
}
int main()
{int judge = 0;
do
{int index = 0;
char ch;
char input[100];
while ((ch = getchar()) != '\n')
{ input[index] = ch;
index++;
}
//使用strcmp函数要小心,因为他遇不到\0会一直读下去,导致读到没用的内容
input[index] = '\0';
//这个根据自己的情况进行设置
if (index<= 2)
{//调用函数
judge = Judge(input);
switch (judge)
{ case 1:
printf("1\n");
break;
case 11:
printf("11\n");
break;
case 12:
printf("12\n");
break;
default:
printf("输入错误!请重新输入\n");
break;
}
}
else
{ printf("输入错误!请重新输入\n");
//赋一个1给judge,确保即使输错了也能让while循环一直进行下去。
judge = 1;
}
} while (judge);
}
总结
检验合法性输入有不同的方法,在不同的场景下还要注意输入缓冲区中\n的问题,但主要还是依靠while循环来实现,因此还望各位读者多多思考,谢谢!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流