当用户输入的内容不是程序员期待的内容怎么办?

针对这个问题,其实很好处理,但是多多少少也需要用户的配合,AS we all know, 任何程序都不可能是绝对完美的,废话不多说直接上代码。

#include "stdio.h"
int main(){
   int temp;  
   printf("\nplease input the value of temp(int):");
   printf("\n 求求您啦,输入个正常的整数把!");
   scanf("%d",&temp);
   /*
   ****
   **
   **
   **     balalalalal
   */
   return 520;
}

你在写代码的时候让用户输入是不是总是这样子?求爷爷喊奶奶,一旦输入的数字不合格或者根本不是数字的时候,将会面临“灾难性的后果”,这样的代码显然是非常糟糕的,学过数据结构的同学肯定都知道,一个好的算法必须要满足五个特性,而这串代码显然已经不满足健壮性了,可见他是非常脆弱的,用户的轻轻一击便会让算法结果产生翻天覆地的变化。

有没有什么装备给这串代码武装自己呢? 显然是有的,否则也不会有这篇文章了,废话不多说,直接上代码。

#include "stdio.h"
int main(){
   int temp;  
   char ch;
   printf("\nplease input the value of temp(int):");
   printf("\n 你随便输入,搞不定算我输!");
   while((scanf("%d",&temp))!=1){
         printf("\n你小子的数值类型输入错误,请按回车键之后重新输入!");
         while((ch=getchar())!=' ') continue;
   }
   return 520;

很容易看出这段代码与上述代码的不同,C语言的初学者可能很难想到scanf还是可以有返回值的,当返回值为1时代表着输入内容一切无误,一旦不为1则说明了输入的内容是违规的。这样就可以防止在错误的情况下继续放任代码往下面执行。
可能细心的同学会发现,内部为什么还有一层循环呢?这是为了防止这个循环会无限的进行下去,有兴趣的小伙伴可以尝试删去内部循环试一下。
优化到此为止嘛? 当然不是,这就让我们考虑到了这个循环的其他用途,当我们想要的temp值在某个区间怎么办嘛?这就需要我们灵活的加判别条件啦, 举个栗子;

#include "stdio.h"
int main(){
   int temp;  
   char ch;
   printf("\nplease input the value of temp(int):");
   printf("\n 你随便输入,搞不定算我输!");
   while((scanf("%d",&temp))!=1 || temp<=0){     
   //这里  我还想让temp的输入值为整数, 就也可以这样子
         printf("\n你小子的数值类型输入错误,请按回车键之后重新输入!");
         while((ch=getchar())!=' ') continue;
   }
   return 520;

讲到这里不知道大家接下来的编程生活中会不会有一丝丝改变呢? 当然,我也是一个C语言进阶者,如果有不足的地方欢迎大家多多指正,多多补充,大家一起进步!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值