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:;
}    

猜你喜欢

转载自blog.csdn.net/weixin_42381351/article/details/80900843