C基础-goto语句的一种用途

 
#include<stdio.h>
int main()
{
	int a=0;
	while(1)
	{
	   switch(a)
	  {
	          case 1: printf("%d\n",a); break;
	          case 2: printf("%d\n",a); break;break;
	          case 3: printf("%d\n",a); break;
	          default: break;
	  }
		if(++a==10)
			break;
	}
}    

 

 

 

 

 

结果是打印1,2,3。

现在希望在死循环里面,达到某条件if以后跳出的,比如上面我在case2的时候加了2个break就是希望结束死循环。

但是失败!它只能跳出switch!

那么怎么做?

方法1:

参考https://zhidao.baidu.com/question/403931347.html提供了一种发送:增加死循环的条件!!!

不要写死循环,改动一下while(1)-----》while(a!=2)即可!

实际使用举例 比如文件扫描:

while(1)
{
res = f_readdir(&dir, &fileinfo);                   //读取目录下的一个文件
if (res != FR_OK || fileinfo.fname[0] == 0) break;  //错误了/到末尾了,退出
switch(func)                                          /* It is a file. */
{
	case 0://扫描以后输出
		printf("%s/", path);//打印路径	
		printf("%s\r\n", fn);//打印文件名	
		break;
	case 1://查找有没有
		if(memcmp(fn,name,strlen(name))==0)
		{
		res=100;//存在的!找到了
		printf("Dir_Exist!!!\n");
		break;
        	}
	       break;
	case 2://查找没有系列的
		location= strstr(fn,name);
		if(location&&location>target)
		{
		printf("update!!!\n");
		}
		break;
	default:
		break;				
} 
}	  

现在我希望的是case1找到以后跳出死循环而不是等到文件扫描完在出来。修改:while(1)---》while(res!=100)

 

方法2:goto DIY;这个比break更猛。直接去你想去的地方。

参考:https://blog.csdn.net/u012917700/article/details/49885667

参考:http://bbs.bccn.net/thread-402343-1-1.html

#include<stdio.h>
int main()
{
	int a=0;
	while(1)
	{
	   switch(a)
	  {
	          case 1: printf("%d\n",a); break;
	          case 2: printf("%d\n",a); goto DIY;
	          case 3: printf("%d\n",a); break;
	          default:
	              break;
	  }
		if(++a==10)
			break;
	}
	DIY:;
}    

 

 

顺便说一下

如果是continue会放弃后面的代码也就是放弃这次循环的后面的逻辑,直接开始下以一次循环。我的就是死循环了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值