C语言——while循环

C语言——while循环,第1张

C语言——while循环

 while 循环
我们已经掌握了if语句,当条件满足的情况下,if语句后的语句执行,否则不执行,但是这个语句只会执行一次,但是我们发现生活中很多的实际例子是同一件事情我们需要完成很多次。那我们怎么做呢?C语言中给我们引入了while语句,可以实现循环。
 
 
 while 语法表达式
  while (表达式)
        循环语句;
 
 在while循环中,break用于永久的终止循环
 continue的作用是跳过本次循环continue后面的代码,直接去判断部分,看是否进行下一次循环。例如下图,就陷入了死循环,没有下面的i ++,返回了上面的判断部分。

 


 

 判断下面代码是什么意思?

 

gerchar 获取一个字符 read a character from a stream (getc ,getwc),or get a character from stdin
 putchar 输出一个字符,和printf效果差不多,但是getchar 和 putchar更匹配一点
 stdin 标准输入—键盘
 EOF -end of file -文件结束标志


 这个代码又有什么意义呢?


 举个例子



 这里用scanf_s的同学注意,scanf_s要求在输入char或字符串数组时,要添加最大长度作为参数,所以应该是scanf_s("%s",password,20);


 像 getchar scanf 这样的输入函数,不是直接从键盘上拿的数据,是从中间的缓冲区拿上面的代码,没有输入Y/N,就直接确认失败了,为什么呢??
 因为先是scanf拿数据,假如getchar不拿走n呢,这我们输入了123456,123456到了缓冲区(因为123456是一个字符串,后面默认会有一个n),再按一下回车,scanf就会来缓冲区拿数据,拿走了123456,这时候,缓冲区里面就剩下一个n了,然后getchar来到了缓冲区,发现缓冲区里面有一个n,就直接拿了并赋予了ch,所以并没有让我们输入y/n让getchar拿走。就会判定ch != y,直接走了else。
 

那应该怎么办呢??如何让时候我们需要清理缓冲区,在 int ch = gerchar();上面再写一个getchar,把n拿走后,缓冲区不就是空的了嘛,这样就可以让我们输入了。但是这样只能取走一个字符,如果输入的密码是123456(空格)abcdefg,getchar就拿不走后面的字符,就还是会出现没有判定就确认密码失败了,这时候要用到上图中第二个方法

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5610716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存