QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 869|回复: 5

c语言的函数问题!

[复制链接]
发表于 2003-9-26 23:13:18 | 显示全部楼层 |阅读模式
大家可能都知道在Turbo C中有getch()函数,它是接受一个键盘的字符后无回应的继续执行,但是在gcc下没有用啊!
有哪位知道有类似的函数,我急用!
还有,哪个有c for   linux的教程?    :-)  :-(              :neutral:                    
发表于 2003-9-27 09:15:09 | 显示全部楼层

Re: c语言的函数问题!

哈哈,这个问题曾经困扰了我很久很久~~,直到有一天我发现了--curses.h函数库,世界一下就充满了阳光!(呵呵,废话很多
首先要先include它!(又是废话)
编译的时候,要用-lcurses。(切记)
简单介绍一下其使用方法:
在使用curses的一切命令之前,必须先用initscr()这个函数来开启curses模式,相对的,在结束前要用endwin()来关闭。(通常在程序结束是关闭)
一般的你可以写一个自己的函数来存放一些必要的设定,通常的建议是写一个initial()函数,其内容为:[code:1]
void initial()
{
   initscr();
   cbreak();
   nonl();
   noecho();
   intrflush(stdscr, FALSE);
   keypad(stdscr, TRUE);
   refresh();
}
[/code:1]
简单介绍你需要的函数(其他的你看看man手册就行):
initscr()不说了
cbreak()和nocbreak当cbreak模式开启后,出了DELETE或CTRL等仍被视为特殊控制字元外的一切输入的字元都将被一一读取,当处于nocbreak()是,从键盘输入的字元将被存在buffer里直到输入RETURN或NEWLINE。(这是你需要的吧)
refresh()名如其意,改变你对屏幕的修改,注,只有在执行refresh()之后,你对屏幕的修改,如:move()(移动光标),才会有效!
回复

使用道具 举报

发表于 2003-9-27 11:50:41 | 显示全部楼层
#include <stdio.h>
main()
{
    int c;
    /*
     * The terminal driver is in its ordinary line-at-a-time mode
     */
    printf ("before\n");
    system("stty raw");
    printf ("after\n");
    /* Now the terminal driver is in character-at-a-time mode */
    c = getchar();
    system("stty cooked");
    /* The terminal driver is back in line-at-a-time mode */
}
回复

使用道具 举报

发表于 2003-9-27 14:53:51 | 显示全部楼层
对了需要补充的是:在开启cbreak模式后,从键盘读取一个数用getch()函数。其返回值为整数!
回复

使用道具 举报

发表于 2003-9-28 00:44:49 | 显示全部楼层
不知道有没有介绍curse的问档啊
想知道
不然不知道怎么控制屏幕输入
不用图形界面
那做出的程序很不友好
回复

使用道具 举报

发表于 2003-9-28 09:11:46 | 显示全部楼层
用man就能看吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-14 11:30 , Processed in 0.044308 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表