C语音实现简单的密码登录(简单逻辑)

  今天从一个题目中学到不少东西,打算分享出来和大家探讨一下。

  现有题为:编写代码实现,模拟用户登录情景,并且只能登陆三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。

  首先函数主体先写出来,总体思路先理清,题目说只能登录三次,最多输入三次密码,也就是程序最多循环三次,如果能提前结束的话,提前break跳出即可。

 

  上图为主要循环,此时假设我们要输入的密码是一个字符串"123456",这时给上一个数组password[]。如下图所示:

  这里有两个重点要注意一下,其一就是scanf里的password不用&(取地址)的原因是password本身是一个数组名,数组名就是一个地址,因此不用&。

   其二,就是这里可能会有人把(char password[20] = "")写成(char password[] = ""),这样是不对的,因为这样创建数组,(char password[] = "")里面的[]没有指定大小,它是根据后面内容来创建的,那么后面的""里面是一个空字符串,空字符串我们知道里面只有一个'\0',那么这个password的数组里面也就只有一个元素'\0',此时如果输入一个密码,比如输入了一个"123456"这样的字符串,或者"abcdef"这样的字符串,里面的空间是不够大的,是放不下的,这样就会形成越界访问,因此当我们不知道(char password[] = "")后面的""里面要初始化什么东西的时候,要考虑到数组的空间大小到底够不够我们使用。

  所以上图的一个错误的图例,下图才是一个正确的代码书写方法。

   接下来就是下一步的程序了,题目说到密码成功则登录成功,如果密码错误即退出程序,那么此时我们就给到一个 if 的判断语句。

  注意上图的代码书写也是有错误的,比较2个字符串是否相等的时候,切记不能使用==,而应该使用strcmp这个函数。如下图

   那么主要程序就是如上图所示,当判断password是否和字符串相等,就要看strcmp这个函数是否返回0,是的话即登陆成功,break跳出程序,不是的话密码错误,循环,当循环到第三次的时候,if(i == 3),三次密码都错误的时候,程序退出。

  这里就要大概展开strcmp这个函数来讲一讲,它是一个库函数,我们用电脑上的MSDN来查一下,它的全名是:string compare。头函数是<string.h>,所以最终要在主函数前引用这个头文件。

最终程序运行效果如下图所示:

 

综上就是一个简单的密码输入逻辑,当然在正式的软件开发的时候,密码判断比上面说到的复杂的多了,因为密码不可能就明文写入代码里头的,正常情况来说密码是加密过后放入数据库里头的,里头需要与密码匹配的话还会涉及到加密解密的一个过程,所以上述只是探讨一个简单的逻辑。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值