📄 basic8.c
字号:
#include "os.h"
#include "ptype.h"
#include "res.h"
FAR Int8 inkey();
FAR void exec_inkey();
FAR void exec_mid();
FAR char *GetAllocBuf();
FAR void get_exp(char *result);
FAR UInt8 IsInteger(char *value_ptr);
FAR void serror(Int8 error);
FAR int atoi(char *x);
FAR Boolean GetValidNumber(char *p, int n);
FAR void SaveInputData();
FAR bitnode *search_vartree(char *s);
FAR char *get_type(char *s);
FAR void doingassign(char *var, char *value);
FAR void add_type(char *result, int data_type);
FAR int gcvt(double i, char flag, char *result);
extern jmp_buf e_buf;
extern char *prog;
extern char *token;
extern char *TmpOut;
extern char *pOutBuf;
extern char InputFlag;
extern UInt8 GTflag;
extern Int8 *TmpBuf, *TmpOut, pCurBuf, *pBasicFileName;
FAR Boolean GetValidNumber(char *p, int n)
{
char *int_part, *point_part, *dot_pos, *ptr;
int flag;
int_part = TmpBuf + 19 * 120;
point_part = int_part + 50;
Memset(int_part,0,100);
if (*p=='-'||*p=='+') p++;
dot_pos = Strchr(p, '.');
if (dot_pos!=(char*)Null)
{
*dot_pos = 0;
Strcpy(int_part, p);
*dot_pos = '.';
if (Strlen(dot_pos + 1)<30)
{
Strcpy(point_part, dot_pos + 1);
}
else
{
Strncpy(point_part, dot_pos + 1, 30)
}
}
else
Strcpy(int_part, p);
if (Strlen(int_part)>n) {
return False;
}
else if ( Strlen(int_part) + Strlen(point_part) > n )
{
flag = 0;
ptr = point_part + n - Strlen(int_part);
if (*ptr>0x34)
{
while (--ptr >= point_part)
{
if (*ptr!=0x39)
{
*ptr = *ptr + 1;
break;
}
else
*ptr = 0x30;
}
if (ptr < point_part)
{
ptr = int_part + Strlen(int_part);
while (--ptr!=int_part)
{
if (*ptr!=0x39)
{
*ptr = *ptr + 1;
break;
}
else
*ptr = 0x30;
}
if (ptr == int_part)
{
*ptr = 0x30;
flag = 1;
if (Strlen(int_part)==n) {
return False;
}
}
}
}
ptr = p;
if (flag) *p++ = 0x31;
Strcpy(p, int_part);
if (Strlen(ptr) == 14) {
return True;
}
Strcat(p, ".");
*(point_part + n - Strlen(int_part)) = 0;
Strcat(p, point_part);
}
return True;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -