#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 main
void initial()
{
initscr();
cbreak();
nonl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();
}
原设计要不停循环,变换b的值,改变坐标。可是呢b的值只变了一次,就不再变了。坑爹啊。怎么解决?
8 个解决方案
#1
那个注释掉的while和do忘记改回去了。我在测试找问题呢。在线等答案。
#2
大家不必研究那个curses库,就研究这个循环结构就行了。循环的问题。
#3
int b=10;
这一句放到do while循环外面去。
这一句放到do while循环外面去。
#4
你把这句 int b=10;放到do-while前面定义试试。
#5
没用,开始都是放前面的。改进后才这样。不是位置的问题。请大家仔细看代码,仔细思考,其实是很简单的问题,只不过找不到解决办法。谁看懂问题再回帖,然后贴出解决办法。
#6
#define KEY_UP 'a' //我下面将 ch 改成char类型了
int b = 10; //放到main函数外面,作全局变量
char ch; //我改成char类型了
ch=getchar();
#7
实在不理解楼主的意思,再不行就算了。
#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);
}
#8
谢谢。因为我把ch=getchar()放到while外边了,怪不得只循环了一次呢?怪我粗心,麻烦大家了。
#1
那个注释掉的while和do忘记改回去了。我在测试找问题呢。在线等答案。
#2
大家不必研究那个curses库,就研究这个循环结构就行了。循环的问题。
#3
int b=10;
这一句放到do while循环外面去。
这一句放到do while循环外面去。
#4
你把这句 int b=10;放到do-while前面定义试试。
#5
没用,开始都是放前面的。改进后才这样。不是位置的问题。请大家仔细看代码,仔细思考,其实是很简单的问题,只不过找不到解决办法。谁看懂问题再回帖,然后贴出解决办法。
#6
#define KEY_UP 'a' //我下面将 ch 改成char类型了
int b = 10; //放到main函数外面,作全局变量
char ch; //我改成char类型了
ch=getchar();
#7
实在不理解楼主的意思,再不行就算了。
#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);
}
#8
谢谢。因为我把ch=getchar()放到while外边了,怪不得只循环了一次呢?怪我粗心,麻烦大家了。