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

📄 rddouble.c

📁 unix环境下c语言屏幕编程开发
💻 C
字号:
/**************************************** *                                      * *	在x列y行处读一长的正实数	* *	^^^^^^^^^^^^^^^^^^^^^^^^     	* *                                      * *       以回车结束,                    * *       长度大于14时返回 TLONG         * *                                      * ****************************************/#include "../inc/screen.h" rddouble(x,y,precsion,value,flag,negflag,lfflag)int 	x,y,precsion,flag,negflag,lfflag;double	*value;{	int 	i,j,bad,tag,negsign;	char	ch,s[16];	if(x < 0 || x > 79 || y < 0 || y > 24 || precsion < 0 || precsion > 10)		return(ERR);	i = j = 0;	tag = TRUE;	negsign = FALSE;	do{		scp(x + i,y); 		ch = wgetchar();		switch(ch)		{			case '0': case '1': case '2': case '3': case '4':			case '5': case '6': case '7': case '8': case '9':				if(i == 14)	/*	长度大于14   */					return(TLONG);				else 				{					s[i] = ch;					i++;					putchar(ch);				}				break;			case BLANK:	/*	退格处理	*/			case 'h':                        case 'H':                        case BS:                        case '.':                                if(i>0)                                     i--;                                if(i==0&&s[0]=='-')negsign=FALSE;				tag = TRUE;				scp(x + i,y);				putchar(SP);				break;			case LF: case CR:				if(i == 0)				{					if(lfflag == TRUE)						return(QUIT);					else						beep(1);				}				break;			case TAB:				if(flag == TRUE)					return(ABORT);				break;			case ESC:				return(BKABORT);			case '-':				if(i == 0 && negflag == TRUE)				{					s[i] = ch;					i++;					putchar(ch);					negsign = TRUE;				}				else					beep(1);				break;			default:	/*	非法字符处理	*/				beep(1);				break;		}     }while(i < 1 || (ch != CR && ch != LF));/*	以回车结束	*/      if(precsion==3)      {       if(i==0)       {           s[0]='0';           s[1]=NUL;       }       else if(i==1)            {              s[5]=NUL;              s[4]=s[0];              s[3]='0';              s[2]='0';              s[1]='.';              s[0]='0';            }            else if(i==2)                 {                    s[5]=NUL;                    s[4]=s[1];                    s[3]=s[0];                    s[2]='0';                    s[1]='.';                    s[0]='0';                 }                 else if(i==3)                      {                        s[5]=NUL;                        s[4]=s[2];                        s[3]=s[1];                        s[2]=s[0];                        s[1]='.';                        s[0]='0';                      }                      else                      {                         s[i+1]=NUL;                         s[i]=s[i-1];                         s[i-1]=s[i-2];                         s[i-2]=s[i-3];                         s[i-3]='.';                      }           }     if(precsion==2)     {       if(i==0)       {          s[0]='0';          s[1]=NUL;       }       else if(i==1)            {              s[4]=NUL;              s[3]=s[0];              s[2]='0';              s[1]='.';              s[0]='0';            }            else if(i==2)                 {                  if(negflag==TRUE&&s[0]=='-')                  {                    s[5]=NUL;                    s[4]=s[1];                    s[3]='0';                    s[2]='.';                    s[1]='0';                  }                  else                  {                    s[4]=NUL;                    s[3]=s[1];                    s[2]=s[0];                    s[1]='.';                    s[0]='0';                  }                }                else                 {                   s[i+1]=NUL;                   s[i]=s[i-1];                   s[i-1]=s[i-2];                   s[i-2]='.';                }       }	sscanf(s,"%lf",value);	if(negsign == TRUE)		return(NEGSIGN);	else		return(TRUE);	/*	正常返回	*/}

⌨️ 快捷键说明

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