📄 cchar.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 + -