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);
}
c语言行编辑程序的更多相关文章
- HNCU1741:算法3-2:行编辑程序
http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1741 题目描述 一个简单的行编辑程序的功 ...
- 数据结构算法C语言实现(七)--- 3.1栈的线性实现及应用举例
一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email: ...
- Mac电脑C语言开发的入门帖
本文是写给Mac电脑开发新手的入门帖,诸神请退散. C语言 C语言可说是电脑环境中的"镇国神器",从发明至今,虽然C语言的使用者缓慢的减少,但从当前市场应用情况看,尚无一台电脑能够 ...
- 数据结构(c语言版)代码
第1章 绪论 文档中源码及测试数据存放目录:数据结构\▲课本算法实现\▲01 绪论 概述 第一章作为绪论,主要介绍了数据结构与算法中的一些基本概念和术语.对于这些概念术语 ...
- #Laravel 笔记# 多语言化 App::setLocale() 持久化。
App::getLocale();获取当前语言 App::setLocale();设置语言配置文件 语言配置文件config/app.php locale 是默认语言,fallback_locale为 ...
- 数据结构(c语言版)文摘
第一章 绪论 数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理 ...
- 10-09C#语言基础
10-09C#语言基础 第一课 一.新项目的建立:打开Visual studio2012,单击“文件→新建项目→模板isualC# Windows 控制台应用程序→确定”即可. 在新建的项目中,首 ...
- SDUT OJ 1479 数据结构实验之栈:行编辑器
数据结构实验之栈:行编辑器 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 一个简单的行编辑程序的功能是:接受用户从终端输入的程 ...
- SDUT-1479_数据结构实验之栈与队列九:行编辑器
数据结构实验之栈与队列九:行编辑器 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个简单的行编辑程序的功能是:接受用 ...
随机推荐
- 【转】es6的拓展运算符 spread ...
原文:https://blog.csdn.net/qq_30100043/article/details/53391308 The rest parameter syntax allows us to ...
- JAVA加解密 -- Base64加解密
Base64算法实现:可以将任意的字节数组数据,通过算法,生成只有(大小写英文.数字.+./)(一共64个字符)内容表示的字符串数据. private static final String str ...
- [转]2年SQL Server DBA调优方面总结
2年SQL Server DBA调优方面总结 当2年dba 我觉得,有些东西需要和大家分享探讨,先书单. 书单 1.<深入解析SQL Server 2008 系列> 这个就是mssql ...
- Tornado框架的初步使用
Tornado的搭建很简单,使用pip,或者下载源码均可. 我们先看一个最简单的程序: import tornado.ioloop import tornado.web class MainHan ...
- 查看tomcat启动文件都干点啥---catalina.bat
在上一次查看tomcat启动文件都干点啥一文中,我们总结出,startup.bat文件的作用就是找到catalina.bat文件,然后把参数传递给它,在startup.bat中,调用catalina. ...
- vs2015+opencv-3.2.0-vc14配置
用的VS2015免费的community社区版,功能足矣. 很早就有配置opencv249,原本觉得低版本的稳定,一直没有配成功过,测试总是报错 出现error LINK:无法打开文件“opencv_ ...
- paho-mqtt 学习笔记
Installation The latest stable version is available in the Python Package Index (PyPi) and can be in ...
- Android WebView 开发具体解释(三)
转载请注明出处 http://blog.csdn.net/typename/article/details/40302351 powered by miechal zhao 概览 Android ...
- Session值的存储与删除
private static void SetSession<T>(string key, T val) { HttpContext.Current.Session[key] = (T)v ...
- MII_GMII_RGMII_RMII_SMII_SSMII_TBI_RTBI
简介 MII是英文Medium Independent Interface的缩写,翻译成中文是“介质独立接口”,该接口一般应用于以太网硬件平台的MAC层和PHY层之间,MII接口的类型有很多,常用的有 ...