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

📄 cchar.c

📁 即时计算加法
💻 C
字号:
/*
  Name:cchar.c
  Copyright:
  Author:
  Date: 17-11-08 23:56
  Description:cchar类的成员函数的定义
*/

#include "includes.h"

#define CC_SIZE 50 //定义单位域的长度

/*
  Function Name:CCharCreater
  Author: 
  Description:用于创建一个CChar类的对象并且初始化
*/

CChar * CCharCreater( void )//此函数只在申请新的空间时调用
{
	CChar * cchar_ = NULL;//头节点并初始化
	char * Temp;//临时变量
	cchar_ = ( CChar * ) malloc ( sizeof ( CChar ));//分配空间
	Temp = ( char * ) malloc (( sizeof ( char )) * CC_SIZE );//给临时变量分配空间
	if ( (Temp == NULL ) || ( cchar_ == NULL ))
	{
		Error ( E_OVER_MEM );
	}
	else
	{
		* Temp = 0;//初始化为0,数据安全性,但此处操作是否适当尚待讨论
		//!!!!!!!!!!!!!!
		//!!!!!!!!!!!!!!
		//!!问题代码!!问题代码!!
		//!!!!!!!!!!!!!!
		cchar_ -> calchar = Temp;//将临时变量的域定向到CLine
		Temp = NULL;//将Temp置空
		cchar_ -> CCharLen = CC_SIZE;//当前小节的长度,用于扩展
		return cchar_;//返回头节点
	}
}

/*
  Function Name:CCharExpand
  Author: 
  Description:用于扩展calchar域,原理与LinerExpand相同
*/

void CCharExpand ( CChar * Old )
{
	int i;
	char * Temp = NULL;
	Temp = ( char * ) malloc (( CC_SIZE + ( Old -> CCharLen )) * sizeof ( char ));
	//扩展calchar域的大小
	if ( Temp == NULL )
	{
		Error ( E_OVER_MEM );//内存不足时的处理
	}
	else
	{
		//此处应该先将旧的表达式复制到新的内存中,然后重定向指针
		for ( i = 0 ; i < (( Old -> CCharLen ) - CC_SIZE ) ; ++i )
		{
			*( Temp + i ) = *( Old -> calchar );//旧空间内容复制到新空间
		}
		free ( Old -> calchar );//重定向到CLine
		Old -> calchar = Temp;
		Temp = NULL;//将NULL置空
	}
}

⌨️ 快捷键说明

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