C++while似乎在死循环
#include<stdio.h>#include<stdlib.h>chargetcharsyh(){charinchar;scanf("%c",inchar);ret...
#include <stdio.h>#include<stdlib.h>char getcharsyh(){ char inchar; scanf("%c", inchar); return inchar;}int main(){char direction; int x=0,y=0,o=0,p=0,xx=0,yy=0; char fx[100][100]; printf("enter\n"); while(1){ system("clear"); for(o=0;o<100;o++) {for(p=0;p<100;p++) fx[o][p]=' '; } printf("here1\n"); direction=getcharsyh(); printf("here2\n"); switch(direction) {case's':x++;break; case'w':x--;break; case'a':y--;break; case'd':y++;break; } fx[x][y]='*'; for(;xx<100;xx++) { for(;yy<100;yy++) printf("%c",fx[xx][yy]); printf("\n"); } } return 0;}-- 插入 --
展开
1个回答
展开全部
程序问题不少。
首先解释while循环,这就是一个无限循环,没有退出机制,退出需要强制退出。从逻辑上,接收键盘某个键,判断为退出程序是可以的。
其次,程序运行“卡”在那里(不进行下一次循环),是因为子函数中scanf在等待键盘输入,输入一个字符(并回车)程序会继续,但这个语句写的有问题,会死机。正确写法是:
scanf("%c", &inchar); //inchar加上地址符
不过即使修改了死机问题,这个程序距离图中要求还差很远。无论是界面刷新机制、键盘接收机制还是控制机制,在纯控制台程序下解决都是很麻烦的。一般建议这样的程序用图形界面完成(比如MFC单文档)、并使用定时器(或线程)来完成控制机制。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询