linux环境下无阻塞键盘输入以及MAP容器中value为数组的一些问题
2016-03-30 11:58
417 查看
一、使用ncurses实现键盘无阻塞输入的问题
先看代码:
如果没有加fcntl(0,F_SETFL, O_NONBLOCK)函数,程序会 key = getch()处等待用户输入(不用回车)而不是继续往下执行。
二、使用数组作为map容器中value的值
上面的代码实现的是创建MAP容器使arrChar[]的key对应arr数组的每一行。一开始反了一个错误:
这样的运行结果是map里所有key对应的值都是0,0,-1,0,将
将
先看代码:
#include "ncurses.h" #include <fcntl.h> int main(int argc, char **argv) { int key; initscr(); crmode(); keypad(stdscr,TRUE); noecho(); fcntl(0,F_SETFL, O_NONBLOCK);//加这句才能实现非阻塞 clear(); refresh(); while (1) { key = getch(); switch(key) { case 'w': break; case KEY_UP: break; default: break; } } endwin(); return 0; }
如果没有加fcntl(0,F_SETFL, O_NONBLOCK)函数,程序会 key = getch()处等待用户输入(不用回车)而不是继续往下执行。
二、使用数组作为map容器中value的值
int arr[18][4] = { {1,0,0,0}, {1,0,0,-1}, {0,0,0,1}, {0,0,0,-1}, {1,0,0,1}, {-1,0,0,0}, {-1,0,0,1}, {-1,0,0,-1}, {1,-1,0,0}, {1,0,0,0}, {0,1,0,0}, {0,-1,0,0}, {1,1,0,0}, {-1,0,0,0}, {-1,-1,0,0}, {-1,1,0,0}, {0,0,1,0}, {0,0,-1,0} } ; char arrChar[] = {'i','o','j','l','u',',','.','m','O','I','J','L','U','<', '>', 'M', 't', 'b'}; map<char, int*> n; n.clear(); for(int i=0;i<18;++i) { //int* a=new int[4]; //memcpy(&a[0],&arr[i][0],4*sizeof(int)); //cout << a[0]<< a[1]<< a[2]<< a[3]<<endl; n.insert(make_pair(arrChar[i],&(arr[i][0]))); }
上面的代码实现的是创建MAP容器使arrChar[]的key对应arr数组的每一行。一开始反了一个错误:
for(int i=0;i<18;++i) { int a[4]; memcpy(&a[0],&arr[i][0],4*sizeof(int)); n.insert(make_pair(arrChar[i],a)); }
这样的运行结果是map里所有key对应的值都是0,0,-1,0,将
将
n.insert(make_pair(arrChar[i],a));改成
n.insert(make_pair(arrChar[i],&(arr[i][0])));或者改成
n.insert(make_pair(arrChar[i],arr[i]));问题解决。
相关文章推荐
- linux系统调用64位汇编与32位汇编不同及兼容
- linux中安装配置nexus以及maven的安装配置
- Linux下php安装curl扩展
- 在CentOS中编译安装VIM 7.3
- Linux more命令的简单实现
- linux文件类型2
- Linux 远程复制
- linux的启动流程
- Linux 守护进程的启动方法
- Linux系统下创建任务,对指定目录文件进行自动压缩存档
- linux下常用命令
- Linux(centos)系统各个目录的作用详解
- Linux centos 下安装配置SVN服务器
- LINUX qt程序控制台程序编译成功无法运行提示cannot change to directory.....
- 鸟哥的linux私房菜拾 c1b0 遗----中文编码系统
- Linux下用C语言显示文件夹下所有文件的名称、大小、最后修改时间
- linux 设置group_concat_max_len
- CentOS安装pdf2json
- 最新版RHCE 7.0培训视频教程(3部分)
- linux查看系统设备信息