<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML ><HEAD ><TITLE >Input functions</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE=" NCURSES Programming HOWTO " HREF="index.html"><LINK REL="PREVIOUS" TITLE="Output functions" HREF="printw.html"><LINK REL="NEXT" TITLE="Attributes" HREF="attrib.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >NCURSES Programming HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="printw.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="attrib.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="SCANW" ></A >7. Input functions</H1 ><P >Well, printing without taking input, is boring. Let's see functions which allow us to get input from user. These functions also can be divided into three categories.</P ><P ></P ><OL TYPE="1" ><LI ><P >getch() class: Get a character</P ></LI ><LI ><P >scanw() class: Get formatted input</P ></LI ><LI ><P >getstr() class: Get strings</P ></LI ></OL ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="GETCHCLASS" ></A >7.1. getch() class of functions</H2 ><P >These functions read a single character from the terminal. But there are several subtle facts to consider. For example if you don't use the function cbreak(), curses will not read your input characters contiguously but will begin read them only after a new line or an EOF is encountered. In order to avoid this, the cbreak() function must used so that characters are immediately available to your program. Another widely used function is noecho(). As the name suggests, when this function is set (used), the characters that are keyed in by the user will not show up on the screen. The two functions cbreak() and noecho() are typical examples of key management. Functions of this genre are explained in the <A HREF="keys.html" >key management section </A >.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="SCANWCLASS" ></A >7.2. scanw() class of functions</H2 ><P >These functions are similar to <TT CLASS="LITERAL" >scanf()</TT > with the added capability of getting the input from any location on the screen.</P ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="SCANWMVSCANW" ></A >7.2.1. scanw() and mvscanw</H3 ><P >The usage of these functions is similar to that of <TT CLASS="LITERAL" >sscanf()</TT >, where the line to be scanned is provided by <TT CLASS="LITERAL" >wgetstr()</TT > function. That is, these functions call to <TT CLASS="LITERAL" >wgetstr()</TT > function(explained below) and uses the resulting line for a scan. </P ></DIV ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="WSCANWMVWSCANW" ></A >7.2.2. wscanw() and mvwscanw()</H3 ><P >These are similar to above two functions except that they read from a window, which is supplied as one of the arguments to these functions. </P ></DIV ><DIV CLASS="SECT3" ><H3 CLASS="SECT3" ><A NAME="VWSCANW" ></A >7.2.3. vwscanw()</H3 ><P >This function is similar to <TT CLASS="LITERAL" >vscanf()</TT >. This can be used when a variable number of arguments are to be scanned.</P ></DIV ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="GETSTRCLASS" ></A >7.3. getstr() class of functions</H2 ><P >These functions are used to get strings from the terminal. In essence, this function performs the same task as would be achieved by a series of calls to <TT CLASS="LITERAL" >getch()</TT > until a newline, carriage return, or end-of-file is received. The resulting string of characters are pointed to by <TT CLASS="LITERAL" >str</TT >, which is a character pointer provided by the user.</P ></DIV ><DIV CLASS="SECT2" ><H2 CLASS="SECT2" ><A NAME="GETSTREX" ></A >7.4. Some examples</H2 ><DIV CLASS="EXAMPLE" ><A NAME="BSCEX" ></A ><P ><B >Example 4. A Simple scanw example </B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="PROGRAMLISTING" ><SPAN CLASS="INLINEMEDIAOBJECT" >#include <ncurses.h> /* ncurses.h includes stdio.h */ #include <string.h> int main() { char mesg[]="Enter a string: "; /* message to be appeared on the screen */ char str[80]; int row,col; /* to store the number of rows and * * the number of colums of the screen */ initscr(); /* start the curses mode */ getmaxyx(stdscr,row,col); /* get the number of rows and columns */ mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg); /* print the message at the center of the screen */ getstr(str); mvprintw(LINES - 2, 0, "You Entered: %s", str); getch(); endwin(); return 0; }</SPAN ></PRE ></FONT ></TD ></TR ></TABLE ></DIV ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="printw.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="attrib.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Output functions</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Attributes</TD ></TR ></TABLE ></DIV ></BODY ></HTML >