中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
第七章:一些类似scanw()的输入函数——(NCURSES Programming HOWTO中文版)
作者:未知 时间:2005-07-27 23:25 出处:CSDN 责编:chinaitpower
              摘要:第七章:一些类似scanw()的输入函数——(NCURSES Programming HOWTO中文版)

第七章:一些类似scanw()的输入函数

如果在屏幕上只是打印而没有输入的话,那样的程序是索然无味的。让我们来看看那些处理用户输入的函数。这些函数也被分为三类:
getch()类函数集:读取一个字符的一类函数。
scanw()类函数集:按照格式化读取输入的一类函数。
getstr()类函数集:读取字符串的一类函数。

7.1. getch()函数集

这些函数将从终端读入一个字符。但是在使用它的时候需要考虑有些微妙的情况:比如你没有事先调用cbreak()函数的话,CURSES将不会连续读取你输入的字符,除非你输入了换行符或者文末符。为了避免这种情况的出现,在需要即时显示输入字符的程序中,必须先调用cbreak()函数。另外一个被广泛使用的函数是noecho()。这个函数被调用时,用户输入的字符不会将显示在屏幕上。cbeak()和noecho()是两个典型的用于键盘管理的函数。这类的函数将在键盘管理一章中说明。

7.2. scanw()函数集

这些函数用法大体上和scanf()函数相似。只不过加入了能够在屏幕的任意位置格式化输入字符串的功能。

7.2.1. scanw()函数和mvscanw()函数

scanw()函数的用法和sscanf()函数的用法基本相同。实际上,在调用scanw()函数时,是调用了wgetstr()函数,并将wgetstr()函数处理的数据结果传送到一个scanw()调用中。(wgetstr()函数将在下面详细介绍,写到这里是为了结构整齐。)

7.2.2. wscanw()函数和mvwscanw()函数

这两个函数的用法和以上两个函数相似。区别在于它们从一个窗口中读取数据。所以,它们需要提供指定窗口的指针。

7.2.3. vwscanw()函数(vwscanw())

这个函数和vprintf()相似。它用于输入变量表中所对应的变量。

7.3. getstr()函数集

这些函数用于从终端取得字符串。本质上,连续使用getch()函数直到读到一个换行符(或文末符)和这个函数使用的结果是一样的。当健入后它会创建一个指向这个字符串的指针。

7.4. 例子
例4:一个简单的使用scanw()函数的例子。

#include <ncurses.h>    /* ncurses.h 已经包含了stdio.h */ 
#include <string.h>
 
int main()
{
 char mesg[]="Enter a string: ";         /* 将要被打印的字符串信息 */
 char str[80];
 int row,col;                                            /* 存储行号和列号的变量,用于指定光标位置 */
 initscr();                                                 /* 进入curses模式 */
 getmaxyx(stdscr,row,col);                  /* 取得stdscr的行数和列数 */
 mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg); 
    /* 在屏幕的正中打印字符串mesg */

 getstr(str);                                             /* 将指针str 指向读取的字符串 */
 mvprintw(LINES - 2, 0, "You Entered: %s", str);
 getch();
 endwin();

 return 0;
}


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有