data.c

来自「可以在嵌入式应用中」· C语言 代码 · 共 137 行

C
137
字号
#include <CsAgb.h>
#include <rb_data.h>
#include <rbasic.h>

void dat_add_num(double num)//置数字数据
{
   if (num_dat_sta==NULL)
   {
      num_dat_sta=(struct num_dat *)malloc(sizeof(struct num_dat));
      if (num_dat_sta==NULL)
      {
         rb_error=1;
         return;
      }
      num_dat_end=num_dat_sta;
      num_dat_now=num_dat_sta;
      num_dat_sta->num=num;
      num_dat_sta->next=NULL;
   }
   else
   {
      num_dat_end->next=(struct num_dat *)malloc(sizeof(struct num_dat));
      if (num_dat_end->next==NULL)
      {
         rb_error=1;
         return;
      }
      num_dat_end=num_dat_end->next;
      num_dat_end->num=num;
      num_dat_end->next=NULL;
   }
}
double dat_read_num()//读数据
{
   double num;
   if (num_dat_now==NULL)
   {
      rb_error=20;
      return 0.0;
   }
   num=num_dat_now->num;
   num_dat_now=num_dat_now->next;
   return num;
}
void dat_add_str(char *str)//置字符串数据
{
   u8 len=str_len(str);
   char *strp=(char *)malloc(len);
   if (strp==NULL)
   {
      rb_error=6;
      return;
   }
   if (str_dat_sta==NULL)
   {
      str_dat_sta=(struct str_dat *)malloc(sizeof(struct str_dat));
      if (str_dat_sta==NULL)
      {
         rb_error=1;
         return;
      }
      str_dat_sta->str=strp;
      strcpy(str_dat_sta->str,str);
      str_dat_sta->next=NULL;
      str_dat_end=str_dat_sta;
      str_dat_now=str_dat_sta;
   }
   else
   {
      str_dat_end->next=(struct str_dat *)malloc(sizeof(struct str_dat));
      if (str_dat_end->next==NULL)
      {
         rb_error=6;
         return;
      }
      str_dat_end=str_dat_end->next;
      str_dat_end->next=NULL;
      str_dat_end->str=strp;
      strcpy(str_dat_end->str,str);
   }
}

char *dat_read_str()//读字符串数据
{
   char *strp;
   if (str_dat_now==NULL)
   {
      rb_error=6;
      return NULL;
   }
   strp=str_dat_now->str;
   str_dat_now=str_dat_now->next;
   return strp;
}

void dat_restore(u8 ty)//数据重置
{
   if (ty) str_dat_now=str_dat_sta;
   else num_dat_now=num_dat_sta;
}

void dat_clean_num(struct num_dat *cls)//数据清除
{
   struct num_dat *next;
   while (cls!=NULL)
   {
      next=cls->next;
      free(cls);
      cls=next;
   }
}

void rb_clean_num()
{
   dat_clean_num(num_dat_sta);
   num_dat_sta=NULL;
   num_dat_end=NULL;
   num_dat_now=NULL;
}
void dat_clean_str(struct str_dat *cls)
{
   struct str_dat *next;
   while (cls!=NULL)
   {
      next=cls->next;
      free(cls);
      cls=next;
   }
}
void rb_clean_str()
{
   dat_clean_str(str_dat_sta);
   str_dat_sta=NULL;
   str_dat_end=NULL;
   str_dat_now=NULL;
}

⌨️ 快捷键说明

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