读书人

一个while里边嵌套switch的结构很坑

发布时间: 2012-09-07 10:38:15 作者: rapoo

一个while里面嵌套switch的结构,很坑爹的结果
代码:

C/C++ code
#include<stdio.h>#include<curses.h>void initial();void main(){int i=0;int a=10;initial();for(i=0;i<4;i++){move(a,15);printw("this is a line");a++;}printw("good!");a=a-4;move(a,15);//do//{int b=10;int ch;ch=getch();switch(ch){case KEY_UP:--b;move(b,15);printw("%d",b);break;//case KEY_DOWN://++b;//endwin();//break;default:printw("%d--",b);continue;}--b;printw("fuck--%d",b);//}while(1);}//end of mainvoid initial(){initscr();cbreak();nonl();noecho();intrflush(stdscr,FALSE);keypad(stdscr,TRUE);refresh();}

原设计要不停循环,变换b的值,改变坐标。可是呢b的值只变了一次,就不再变了。坑爹啊。怎么解决?

[解决办法]
int b=10;
这一句放到do while循环外面去。
[解决办法]
你把这句 int b=10;放到do-while前面定义试试。
[解决办法]
C/C++ code
#define KEY_UP 'a'  //我下面将 ch 改成char类型了int b = 10;  //放到main函数外面,作全局变量char ch;  //我改成char类型了 ch=getchar();
[解决办法]
实在不理解楼主的意思,再不行就算了。
C/C++ code
#include<stdio.h>int main(){int i=0;int a=10;for(i=0;i<4;i++){puts("this is a line");a++;}puts("good!");a=a-4;int flag=0;do{int b=10;int ch;flag=0;while(1) {  ch=getchar();  scanf("%*[^\n]");  scanf("%*c");//清空回车,getch()不需要这一步  switch(ch)  {    case 'a':    --b;    printf("%d\n",b);    break;    default:   flag=1;  printf("%d--\n",b);  }  if(flag==1)    break;}if(flag==1) continue;--b;printf("fuck--%d\n",b);}while(1);} 

读书人网 >C语言

热点推荐