一个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);}