(笔记)巧妙清除错误输入

来源:互联网 发布:怎么看淘宝抢购前100 编辑:程序博客网 时间:2024/05/22 14:58

while ((status = scanf("%d", &code)) != 1 ||  (code < 1 || code > 5))//  {  if (status != 1)  scanf("%*s");//*号是为了跳过%s这个字符串,所以后面才没有跟其它参数  printf("Enter an integer from 1 to 5, please.\n");  }

scanf("%*s"); 表示从输入缓冲区读入一个字符串,但不保存该字符串(简单丢弃),放在这里是为了清除输入缓冲区中的非法输入。

还可以用正则表达式
比如 scanf("%[^0-9-]",&d);