当前位置:  技术问答>linux和unix

关于curses函数的一个程序

    来源: 互联网  发布时间:2015-08-14

    本文导语:  我的一个程序,在redhat  Linux  9.0上运行时不成功,程序为一显示界面的范例,代码如下,恳请高手帮忙:   #include   #include   #include   #include   #include   static  FILE  *output_stream  =  (FILE  *)0;   char  *menu[...

我的一个程序,在redhat  Linux  9.0上运行时不成功,程序为一显示界面的范例,代码如下,恳请高手帮忙:  
#include  
#include  
#include  
#include  
#include  
static  FILE  *output_stream  =  (FILE  *)0;  
char  *menu[]={"a  -  add  new  record","d  -  delete  record","q  -  quit",NULL};  
int  getchoice(char  *greet,char  *choices[],FILE  *in,FILE  *out);  
int  char_to_terminal(int  char_to_write);  
int  main()  
{  
   int  choice=0;  
   FILE  *input;  
   FILE  *output;  
   if(!isatty(fileno(stdout)))  
   {  
       fprintf(stderr,"You  are  not  a  terminal,OK.n");  
   }  
   input=fopen("/dev/tty","r");  
   output=fopen("/dev/tty","w");  
   if(!input    ¦  ¦  !output)  
   {  
       fprintf(stderr,"Unable  to  open  /dev/tty  n");  
       exit(0);  
   }  
   printf("Hello  Linux!");  
   do  
   {  
       choice=getchoice("Please  select  an  action",menu,input,output);  
       printf("You  have  chosen:  %cn",choice);  
   }while(choice  !=  'q');  
   exit(0);  
}  
int  getchoice(char  *greet,char  *choices[],FILE  *in,FILE  *out)  
{  
   int  chosen=0;  
   int  selected;  
   int  screenrow,screencol=10;  
   char  **option;  
   char  *cursor,*clear;  
   output_stream=out;  
   setupterm(NULL,fileno(out),(int  *)0);  
   cursor=tigetstr("cup");  
   clear=tigetstr("clear");  
   screenrow=4;  
   printf("Hello  Linuxn");  
   tputs(clear,  1,char_to_terminal);  
   tputs(tparm(cursor,screenrow,screencol),1,char_to_terminal);  
   fprintf(out,"Choice:  %s",greet);  
   screenrow+=2;  
   option=choices;  
   while(*option)  
   {  
       tputs(tparm(cursor,screenrow,screencol),1,char_to_terminal);  
       fprintf(out,"%s",*option);  
       screenrow++;  
       option++;  
   }  
   do  
   {  
       selected=fgetc(in);  
       option=choices;  
       while(*option)  
       {  
           if(selected==*option[0])  
           {  
               chosen=1;  
               break;  
           }  
       }  
       if(!chosen)  
       {  
           tputs(tparm(cursor,screenrow,screencol),1,char_to_terminal);  
           fprintf(out,"Incorrect  choice,select  againn");  
       }  
   }while(!chosen);  
   tputs(clear,1,char_to_terminal);  
   return  selected;  
}  
int  char_to_terminal(int    char_to_write)  
{  
   if(output_stream)  
       putc(char_to_write,output_stream);  
   return  0;  
}  
 

|
回ccwwcsdnc: 

if(!input    ¦  ¦  !output)  
   {  
       fprintf(stderr,"Unable  to  open  /dev/tty  n");  
       exit(0);  
   }  
========================================================================
错了,应该是:
if(!input||!output)  
   {  
       fprintf(stderr,"Unable  to  open  /dev/tty  n");  
       exit(1);  
   }  

|
while(*option)  
       {  
           if(selected==*option[0])  
           {  
               chosen=1;  
               break;  
           }  
       ///----------
        option++;

       }  

|
if(!input    ¦  ¦  !output)  
=========

brvbar是什么?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编译#include<curses.h>时连接出问题,望大家帮忙~~~~~
  • curses屏幕操作的问题
  • .net/c#/asp.net iis7站长之家
  • 退出curses环境到字符环境的问题?
  • 熟悉CURSES的进!!!
  • GCC curses动态库链接的错误
  • curses库的问题
  • 求Curses Development Kit(cdk)编译方法
  • Curses Development Kit
  • 请问有那些网站有Curses的资料?
  • 问关于curses的问题
  • curses编程时显示不了中文
  • 正在学习LINUX c+curses 编程
  • 没有curses.h头文件怎么办?
  • 请教curses的高手
  • 请问哪里能找到Curses 的头文件和库文件?
  • 那里有《shell编程》和关于curses编程的教程可以下载,请帮忙?
  • 有没有关于用curses库开发界面的好书,请各位推荐一下
  • 急急急,在线等待:Curses中不能输入汉字
  • curses屏幕错乱


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3