c语言行编辑程序

 

static.h 头文件

typedef struct bufferStatic{

char *top;
char *base;
int staticSize;

}bufferStatic;

typedef int Status;


//初始化栈
Status InitStatck(bufferStatic *S);

//出栈
Status Pop(bufferStatic *S,char *c);

//清空栈
Status ClearStack(bufferStatic *S);

//入栈
Status Push(bufferStatic *S,char c);

//销毁栈
Status DestoryStatic(bufferStatic *S);

//编辑缓冲区
void LineEdit();

 

 staticBufferRealiz.c 文件

#include "static.h"
#include "stdio.h"
#include "stdlib.h"
#define MAX_SIZE 100
#define INCREMENT_SIZE 10
#define ERROR 0
#define OK 1


void main() {

LineEdit();

}
//初始化栈
Status InitStatck(bufferStatic *S) {

S->base = S->top = (bufferStatic *)malloc(sizeof(char)*MAX_SIZE);
if (!S->base)return ERROR;
return OK;

}
//出栈
Status Pop(bufferStatic *S, char *c) {

//判断栈是否为空栈
if (S->base == S->top)return ERROR;
S->top--;
*c = *(S->top);
return OK;

}

//清空栈
Status ClearStack(bufferStatic *S) {
S->base = S->top;
return OK;
}

//向栈中插入元素
Status Push(bufferStatic *S, char c) {

if ((S->top - S->base)>= MAX_SIZE) {

S->base = (bufferStatic*)realloc(S->base,(MAX_SIZE+INCREMENT_SIZE)*sizeof(char));
}

*(S->top) = c;

S->top++;
return OK;

}

//销毁栈
Status DestoryStatic(bufferStatic *S) {

free(S->base);//释放掉开辟的内存
return OK;

}

//编辑缓冲区
void LineEdit() {

bufferStatic S;

//初始化一个空栈
InitStatck(&S);

char c;
char ch = getchar();

//全文结束符
while (ch!=EOF)
{

while (ch != EOF&&ch != '\n')
{
switch (ch)
{

case '#':Pop(&S, &c);
case '@':ClearStack(&S);
default:Push(&S, ch);
break;
}
ch = getchar();

}
ClearStack(&S);
if (ch != EOF) ch = getchar();

}

DestoryStatic(&S);

}

 

转载于:https://www.cnblogs.com/paulversion/p/7592825.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值