⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getdata.c

📁 unix环境下c语言屏幕编程开发
💻 C
字号:
#include "../inc/screen.h"/* * 在指定位置读取字符串 , 字符串可以带初值  * 输入输出参数说明: *     Col、Row : 输入位置                I *     Str      : 输入的字符串            I/O *     Len      : 输入字符串最大长度      I *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 *     FixLen   : 是否定长                I      TRUE 是  FALSE 否 */int GetStr ( Col , Row , Str , Len , MustInput , FixLen ) int  Row , Col ;char *Str ;int Len , MustInput , FixLen ;{    int num ;    char OldStr [ 80 ] ;    memset ( OldStr , 0 , 80 ) ;    strcpy ( OldStr , Str ) ;    wblank ( Col , Row , Len ) ;    writerror ( "" ) ;    do  {	num = rdstr ( Col , Row , Str , Len ) ;	FFSTD	if ( num == BKABORT || num == UPPER )	    break ;        if ( num != QUIT && num < 0 )	    continue ;        if ( num == QUIT ) 	{	    if ( strlen ( OldStr ) == 0 ) 	    {		if ( MustInput == TRUE )		{		    writerror ( "不能输入空值 !" ) ;		    continue ;		}		else		    break ;	    }            else 	    {		strcpy ( Str , OldStr ) ;		wblank ( Col , Row, Len ) ;		plot ( Col , Row , Str ) ;            }        }        if ( FixLen == TRUE && num != Len )        {            writerror ( "必须输入" ) ;            printf ( "%d位!" , Len ) ;            continue ;        }        else	    break ;    }   while ( 1 ) ;    plot ( Col , Row , Str ) ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )        return ( -1 ) ;    else 	return ( 1 ) ;}/* * 在指定位置读取数值型字符串 , 字符串可以带初值  * 输入输出参数说明: *     Col、Row : 输入位置                I *     Str      : 输入的字符串            I/O *     Len      : 输入字符串最大长度      I *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 *     FixLen   : 是否定长                I      TRUE 是  FALSE 否 */int  GetStrNum( Col , Row , Str , Len , MustInput , FixLen )int  Row , Col ;char *Str ;int  Len , MustInput , FixLen ;{    int num ;    char OldStr [ 80 ] ;    memset ( OldStr , 0 , 80 ) ;    strcpy ( OldStr , Str ) ;    wblank ( Col , Row , Len ) ;    writerror ( "" ) ;    do  {	num = rdaccno ( Col , Row , Str , Len ) ;	FFSTD	if ( num == BKABORT || num == UPPER )	    break ;        if ( num != QUIT && num < 0 )	    continue ;        if ( num == QUIT ) 	{	    if ( strlen ( OldStr ) == 0 ) 	    {		if ( MustInput == TRUE )		{		    writerror ( "该项必须输入 !" ) ;		    continue ;		}		else		    break ;	    }            else 	    {		strcpy ( Str , OldStr ) ;		wblank ( Col , Row, Len ) ;		plot ( Col , Row , Str ) ;            }        }        else if ( FixLen == TRUE && num != Len )        {            writerror ( "必须输入" ) ;            printf ( "%d位!" , Len ) ;            continue ;        }	break ;    }   while ( 1 ) ;    plot ( Col , Row , Str ) ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )        return ( -1 ) ;    else 	return ( 1 ) ;}/* * 在指定位置读取日期 * 输入输出参数说明: *     Col、Row : 输入位置                I *     pDate    : 输入的日期              I/O *     Len      : 输入字符串最大长度      I *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 */ /*int  GetDate ( Col , Row , pDate , MustInput ) int  Row , Col ;long *pDate ;int  MustInput ;{    int  num ;    long OldDate ;    OldDate = *pDate ;    writerror ( "" ) ;    do  {	num = rd_date ( Col , Row , pDate , 3 ) ;	FFSTD	if ( num == BKABORT || num == UPPER )	    break ;        if ( num != QUIT && num < 0 )	    continue ;        if ( num == QUIT ) 	{	    if ( OldDate == 0 ) 	    {		if ( MustInput == TRUE )		{		    writerror ( "该项必须输入!" ) ;		    continue ;		}		else		    break ;	    }            else 	    {		*pDate = OldDate ;		plot_date ( Col , Row , *pDate , "yyyy年mm月dd日") ;            }        }	break ;    }   while ( 1 ) ;    plot_date ( Col , Row , *pDate , "yyyy年mm月dd日") ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )        return ( -1 ) ;    else 	return ( 1 ) ;}*//* * 在指定位置读取整数 * 输入输出参数说明: *     Col、Row : 输入位置                I *     pValue   : 输入的值                I/O *     Len      : 输入字符串最大长度      I *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 */int  GetInt ( Col , Row , pValue , Len , MustInput ) int  Row , Col ;int  *pValue ;int  Len , MustInput ;{    int  num ;    int  OldValue ;    char tmpValue [ 20 ] ;    char fmt [ 20 ] ;    OldValue = *pValue ;    wblank ( Col , Row , Len ) ;    strcpy ( tmpValue , "" ) ;    sprintf ( fmt , "%c%dd" , '%' , Len ) ;    writerror ( "" ) ;    do  {	num = rdaccno ( Col , Row , tmpValue , Len ) ;	FFSTD	if ( num == BKABORT || num == UPPER )	    break ;        if ( num != QUIT && num < 0 )	    continue ;        if ( num == QUIT ) 	{	    if ( OldValue == 0 ) 	    {		if ( MustInput == TRUE )		{		    writerror ( "该项必须输入!" ) ;		    continue ;		}		else		    break ;	    }            else 	    {		*pValue = OldValue ;		plot_int  ( Col , Row , *pValue , fmt ) ;            }        }	else	{           tmpValue [ num ] = 0x00 ;	   *pValue = atoi ( tmpValue ) ;	   plot_int ( Col , Row , *pValue , fmt ) ;	}	break ;    }   while ( 1 ) ;    plot_int  ( Col , Row , *pValue , fmt ) ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )        return ( -1 ) ;    else 	return ( 1 ) ;}/* * 在指定位置读取长整数 * 输入输出参数说明: *     Col、Row : 输入位置                I *     pValue   : 输入的值                I/O *     Len      : 输入长整数的最代长度    I *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 */int  GetLong ( Col , Row , pValue , Len , MustInput ) int  Row , Col ;long *pValue ;int  Len , MustInput ;{    int  num ;    long OldValue ;    char tmpValue [ 20 ] ;    char fmt [ 20 ] ;    OldValue = *pValue ;    strcpy ( tmpValue , "" ) ;    wblank ( Col , Row , Len ) ;    sprintf ( fmt , "%c%dld" , '%' , Len ) ;    writerror ( "" ) ;    do  {	num = rdaccno ( Col , Row , tmpValue , Len ) ;	FFSTD	if ( num == BKABORT || num == UPPER )	    break ;        if ( num != QUIT && num < 0 )	    continue ;        if ( num == QUIT ) 	{	    if ( OldValue == 0 ) 	    {		if ( MustInput == TRUE )		{		    writerror ( "该项必须输入!" ) ;		    continue ;		}		else		    break ;	    }            else 	    {		*pValue = OldValue ;		plot_long  ( Col , Row , *pValue , fmt ) ;            }        }	else	{           tmpValue [ num ] = 0x00 ;	   *pValue = atol ( tmpValue ) ;	   plot_long ( Col , Row , *pValue , fmt ) ;	}	break ;    }   while ( 1 ) ;    plot_long ( Col , Row , *pValue , fmt ) ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )	return ( -1 ) ;    else 	return ( 1 ) ;}/* * 在指定位置读取一个标志型数据 * 输入输出参数说明: *     Col、Row : 输入位置                I *     pFlag    : 输入的日期              I/O *     Len      : 输入字符串最大长度      I *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 */int  GetFlag ( Col , Row , pFlag , MustInput , Value ) int  Row , Col ;char *pFlag ;int  MustInput ;char *Value ;{    int num ;    char OldFlag [ 2 ] ;    strcpy ( OldFlag , pFlag ) ;    wblank ( Col , Row , 1 ) ;    writerror ( "" ) ;    do  {	num = rdaccno ( Col , Row , pFlag , 1 ) ;	if ( num == BKABORT || num == UPPER )	{	    plot ( Col , Row , OldFlag ) ;	    strcpy ( pFlag , OldFlag ) ;	    break ;	}	if ( num != QUIT && num < 0 ) 	    continue ;        if ( num == QUIT )	{            if ( strlen ( OldFlag ) == 0 )            {                if ( MustInput == TRUE )                {                     writerror ( "该项必须输入!" ) ;                    continue ;                }		else		    break ;            }            else	    {		strcpy ( pFlag , OldFlag ) ;		plot ( Col , Row , OldFlag ) ;		break ;	    }	}        if ( findch (  Value , pFlag [ 0 ] ) < 0 )	{	    writerror ( "标志不在允许范围内! 请重输 ..." ) ;	    continue ;	}	break ;	       }   while ( 1 ) ;    plot ( Col , Row , pFlag ) ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )        return ( -1 ) ;    else 	return ( 1 ) ;}/* * 在指定位置读取Dec金额, 精确度为(14,2) * 输入输出参数说明: *     Col、Row : 输入位置                I *     pValue   : 输入的Dec金额           I/O *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 */ /*int  GetDecAmt ( Col , Row , pValue , MustInput ) int   Row , Col ;dec_t *pValue ;int   MustInput ;{    int  num ;    dec_t OldValue ;    dec_t DecZero ;    deccopy ( pValue , &OldValue ) ;    wblank ( Col , Row , 14 ) ;    writerror ( "" ) ;    deccvasc ( "0.00" , 4 , &DecZero ) ;    do  {	num = read_dec ( Col , Row , 14 , 2 , pValue , TRUE , FALSE , TRUE ) ;	FFSTD	if ( num == BKABORT || num == UPPER )	    break ;        if ( num != QUIT && num < 0 )	    continue ;        if ( num == QUIT ) 	{	    if ( deccmp ( &OldValue , &DecZero ) == 0 )	    {		if ( MustInput == TRUE )		{		    writerror ( "该项必须输入!" ) ;		    continue ;		}		else		    break ;	    }            else 	    {                deccopy ( &OldValue , pValue ) ;		plot_dec  ( Col , Row , *pValue , "--------&.--" ) ;            }        }	else	{	    plot_dec ( Col , Row , *pValue , "--------&.--" ) ;	}	break ;    }   while ( 1 ) ;    plot_dec ( Col , Row , *pValue , "--------&.--" ) ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )        return ( -1 ) ;    else 	return ( 1 ) ;}*//* * 在指定位置读取Dec金额, 精确度为(14,2) * 输入输出参数说明: *     Col、Row : 输入位置                I *     pValue   : 输入的Dec金额           I/O *     MustInput: 是否必须输入            I      TRUE 是  FALSE 否 */ /*int  GetDecRate ( Col , Row , pValue , MustInput ) int   Row , Col ;dec_t *pValue ;int   MustInput ;{    int  num ;    dec_t OldValue ;    dec_t DecZero ;    deccopy ( pValue , &OldValue ) ;    wblank ( Col , Row , 7 ) ;    writerror ( "" ) ;    deccvasc ( "0.00" , 4 , &DecZero ) ;    do  {	num = read_dec ( Col , Row , 7 , 4 , pValue , TRUE , FALSE , TRUE ) ;	FFSTD	if ( num == BKABORT || num == UPPER )	    break ;        if ( num != QUIT && num < 0 )	    continue ;        if ( num == QUIT ) 	{	    if ( deccmp ( &OldValue , &DecZero ) == 0 )	    {		if ( MustInput == TRUE )		{		    writerror ( "该项必须输入!" ) ;		    continue ;		}		else		    break ;	    }            else 	    {                deccopy ( &OldValue , pValue ) ;		plot_dec  ( Col , Row , *pValue , "-&.----" ) ;            }        }	else	{	    plot_dec ( Col , Row , *pValue , "-&.----" ) ;	}	break ;    }   while ( 1 ) ;    plot_dec ( Col , Row , *pValue , "-&.----" ) ;    if ( num == BKABORT )	return ( -99 ) ;    else if ( num == UPPER )        return ( -1 ) ;    else 	return ( 1 ) ;}*//*  * 通过键入 Y 或 N 确认某件事情 * 输入输出参数说明: *     Caption  : 提示信息 */int Confirm ( Caption )char *Caption ;{    char CaptionStr [ 60 ] ;    char ch ;    sprintf ( CaptionStr , "%s [ Y/N ]" , Caption ) ;    prompt ( CaptionStr ) ;    do {	ch = toupper ( getchar ( ) ) ;    }  while ( ch != 'Y' && ch != 'N' ) ;    if ( ch == 'Y' )	return ( TRUE ) ;    else	return ( FALSE ) ;}char Choice ( Caption , Value )char *Caption ;char *Value ;{    int ch  ;    prompt ( Caption ) ;    do {       ch = getchar ( ) ;    }  while ( findch ( Value , ch ) < 0 ) ;    return ( ch ) ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -