c语言进阶补全2:循环语句

int main()
{
	int i=1;
	while(i<10)
	{
		if(5==i)
		continue;
		
		printf("%d",i);
		i++;
		
	}
	//由于continue的作用为不执行后边语句直接进入一下循环,会导致i一直为五陷入死循环 
    return 0;	
}

while循环中continue的作用,不执行后边的语句直接进入下一循环即跳过本次循环后面的代码直接去判断部分进行下一次循环的判断

int main()
{
	//while循环中的break 
	int i=1;
	while(i<10)
	{
		if(5==i)
		break;
		
		printf("%d",i);//1234 
		i++;
		
	}
	//由于continue的作用为不执行后边语句直接进入一下循环,会导致i一直为五陷入死循环 
    return 0;	
}

while循环中break语句作用,永久中止循环

getchar

putchar

int main()
{
	int ch=getchar();
	
	printf("%c\n",ch);
	
	putchar(ch);
	a=10;
	while((ch=getchar())!=EOF)
	{
		putchar(ch);
	}
	
	return 0;
 } 

当遇到错误:已经执行——————无法写入时,表示程序已经运行,应该停止关闭运行界面

当scanf和getchar一起使用时出现的错误

错误一:因为scanf的缓冲区残留\n导致getchar无法从键盘读取内容只能读到\n

int main()
{
	//错误一当scanf和getchar一起使用时
	//getchar会因为读取了是残废后面的\n导致无法读取键盘内容 
	char password[20]={0};
	
	printf("请输入密码");
	scanf("%s",password);
	printf("请确认密码");
	int ret=getchar();//因为直接读取了缓冲区的\n无法获取键盘内容 
	if('Y'==ret)
	printf("正确");
	if("N"==ret)
	printf("错误");
	return 0;
 } 

错误2:scanf无法读取空格

错误1改良,在scanf后面放一个getchar循环清理scanf残留在缓冲区的字符(可能由于空格导致残留不止为\n)比如adasd adsad会在缓冲区留下空格和后半段字符串加上\n

解决scanf残留的方法

int main()
{
	//错误一当scanf和getchar一起使用时
	//getchar会因为读取了是残废后面的\n导致无法读取键盘内容 
	char password[20]={0};
	int ch=0;
	printf("请输入密码");
	scanf("%s",password);
	while((ch=getchar())!='\n')
	{
}
	 
	printf("请确认密码T为正确N为错误\n");
	int ret=getchar();//因为直接读取了缓冲区的\n无法获取键盘内容 
	if('T'==ret){
	printf("正确");
}
	else if('N'==ret)
	{
	printf("错误");
}
	return 0;
 } 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值