int a;
scanf("%d",&a);
cin>>a;
ex:我想让用户输入整数,但是如果用户输入的不是我想要的类型如!%$#,abcd....都有什么方法或者函数去判断呢?
scanf的返回值是正常读取量的数目,所以只要判断返回值即可。
if(scanf("%d", &a) == 1)
printf("OK!");
else
printf("Failed to read an integer.");
但scanf比较大的一个坑是其遇到无效字符会停止扫描并将无效字符留在缓冲区中,所以会一直检测到失败,进入死循环。遇到这种问题,可以使用如下方案解决:
int a;
while(1 != scanf("%d", &a)) {
fflush(stdin); // 刷新缓冲区
cout << "Invalid input! Please check and input again: ";
}
cout << "a = " << a << endl;
cout << "Test finished!";
return 0;
当然,这也并非一个好的选择,最好是避免在这种情况下使用scanf,可以先按照字符串进行读取,然后检查字符串合法性,使用一些库函数(如sscanf、isdigit、atoi等等)将字符串转化为整数。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。