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 一个简单的行编辑程序的功能是:接受用 ...
随机推荐
- Alfresco 5.0.d 企业文档管理系统
Thanks for downloading Alfresco Community Edition. Your download should begin in three seconds. If i ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 新的机器翻译服务
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第14章节--使用Office Services开发应用程序 新的机器翻译服务 机器翻译服务也是继Wor ...
- JavaScriptl 类数组转换为数组
slice和Array.form方法,具体见示例代码: <!DOCTYPE html> <html lang="zh"> <head> < ...
- Maven 命令行创建项目时 Could not find goal ‘create’ in plugin org.apache.maven.plugins:...
使用maven3.3.9 版本,进行命令行创建项目时输入以下命令创建失败 mvn archetype:create -DgroupId=com.zang.maven -DartifactId=sys ...
- 10、驱动中的阻塞与非阻塞IO
阻塞,就是在获取资源的时候,不能获取到,那么就会将当前的进程挂起(睡眠,也就是将当前进程从调度器拿走了,不会调度当前进程),直到满足条件为止再进行操作.相反,非阻塞,就是即使不能获取到资源,非 ...
- python中MySQL模块TypeError: %d format: a number is required, not str异常解决
转载自:http://www.codeif.com/topic/896 python代码: attr_sql = "INSERT INTO `ym_attribute` (`attr_nam ...
- 【MyBatis学习04】mapper代理方法开发dao
上一篇博文总结了mybatis使用 原始dao的方法存在的一些弊端,我们肯定不会去用它,那么mybatis中该如何开发dao呢?如题所述,这篇博文主要来总结一下使用mapper代理的方法来开发dao的 ...
- MVC 实现表格数据导出Excel(NPOI方式)
前端View(@ViewBag为查询条件): <span id="exprobtn" class="btn_blue" style="dispa ...
- Redis提供商配置ASP.NET会话状态
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Co ...
- 微信错误提示code= -4/微信发送被拒绝
微信错误提示code= -4/微信发送被拒绝 在做第三方登录时.出现微信授权返回的错误码为:code= -4,原因是由于: (微信开放平台的签名填错了微信平台注冊的签名应该是:使用微信签名工具安卓到手 ...