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;}-- 插入 -- 展开
 我来答
bhtzu
2018-01-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4233万
展开全部

程序问题不少。

首先解释while循环,这就是一个无限循环,没有退出机制,退出需要强制退出。从逻辑上,接收键盘某个键,判断为退出程序是可以的。

其次,程序运行“卡”在那里(不进行下一次循环),是因为子函数中scanf在等待键盘输入,输入一个字符(并回车)程序会继续,但这个语句写的有问题,会死机。正确写法是:

scanf("%c", &inchar); //inchar加上地址符

不过即使修改了死机问题,这个程序距离图中要求还差很远。无论是界面刷新机制、键盘接收机制还是控制机制,在纯控制台程序下解决都是很麻烦的。一般建议这样的程序用图形界面完成(比如MFC单文档)、并使用定时器(或线程)来完成控制机制。

追问

在调试呢 现在运行程序可以得知xy的值 但是没有*

现在我只想让wasd控制*移动

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式