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