简单的行编辑器

#include <stdlib.h> /* For _MAX_PATH definition */
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

struct SqStack
{
char *base;
char *top;
int stacksize;
};

void InitStack(SqStack &S)
{
S.base=(char*)malloc(STACK_INIT_SIZE *sizeof(char));
if (!S.base)
exit(1);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}

void push(SqStack &S,char e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));
if (!S.base)
exit(1);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
}
/* www.bianceng.cn */
char pop(SqStack &S,char &e)
{

if (S.top==S.base)
return false;
e=*--S.top;
return e;
}

void ClearStack(SqStack &S)
{
S.top=S.base;
}

void DestroyStack(SqStack &S)
{
free(S.base);
S.top=S.base;
}

bool StackEmpty(SqStack &S)
{
if (S.top==S.base)
return true;
return false;
}

/*void PrintStack(SqStack &S)
{
char e;
while (!StackEmpty(S))
{
pop(S,e);
printf("%d",e);
}
}*/

void main()
{
char ch,e;
SqStack S,D;
InitStack(S);
InitStack(D);
ch=getchar();
while (ch!=EOF)
{
while(ch!=EOF&&ch!='\n')
{
switch(ch)
{
case'#':pop(S,e);break;
case'@':ClearStack(S);break;
default:push(S,ch);break;
}
ch=getchar();
}
while (!StackEmpty(S))
{
e=pop(S,e);
push (D,e);

}
while (!StackEmpty(D))
{
e=pop(D,e);
printf("%c",e);
}
ClearStack(S);
if(ch!=EOF)
ch=getchar();
}
DestroyStack(S);
}

时间: 2024-11-06 19:59:17

简单的行编辑器的相关文章

C++程序设计:原理与实践(进阶篇)15.6 实例:一个简单的文本编辑器

15.6 实例:一个简单的文本编辑器 列表最重要的性质就是可以在不移动元素的情况下对其进行插入或删除操作.下面我们通过一个例子来说明这一点.考虑应该如何在文本编辑器中表示一个文本文件中的字符.所选用的表示方式应当能够使对文本文件进行的操作简单而高效. 那么具体会涉及哪些操作呢?假设文件能存储在计算机的内存中.也就是说,我们可以选择任何一种适合的表示方式,当需要保存到文件中时,只要把它转换成一个字节流就可以了.相应地,我们也可以把一个文件中的字符转成字节流,从而把它读入内存中.这说明我们只需要选择

需要时显示 设计不是简单就行而是不能复杂

近几年移动平台风生水起,APP多得数不胜数,交互方式也是遍地开花,相信大家都玩过那么几个让人惊艳的APP.大家看到的亮点或是转场够炫.或是拟物得恰到好处.又或是突破性的操作方式,但我认为"需要时显示"也是许多设计中的精妙之笔,是设计师应遵循的原则之一. 需要时显示 首先谈谈"需要时显示"这个概念,记忆中这句话有2个出处: Extras on Demand. -<Designing Interfaces> 摘抄:让80%的使用情形更容易,而剩下的20%至少

代码-用C# 做个简单的文本编辑器

问题描述 用C# 做个简单的文本编辑器 新手学习C# 还请多多指教 想问关于文本加密的代码和退出时弹出窗口是否保存 怎么做 解决方案 文本加密可以参考这篇文章 如何加密和解密文件,通过使用 Visual C#http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B307010 解决方案二: 退出时弹出窗口是否保存 这个简单,需要判断一下是否编辑,如果编辑过就提示是否保存,如果用户选择是把内容保存到一个文本文件里就Ok了 解决方案三:

Vim技能修炼教程(6) - 行编辑器

在很久很久以前,计算机的运算能力还很弱,终端与主机的通信也不好.在没有显示器的时代,只能通过电传打字机跟主机通信.那时候只有行编辑器,编辑的时候只能在一行中进行.需要显示哪一行,就把哪一行或者哪几行打印出来看. Unix上使用的行编辑器是ed. 这个编辑器至今仍然在Unix/Linux/FreeBSD各系统中存在. ed的增强版是ex. ex最大增强之处就是提供了可以全屏编辑的模式.在ex中输入:visual命令,就会切换到全屏编辑模式.好吧,这就是vi.Vi本质上就是ex编辑器的visual模

c语言 发彩信 模块-PC直接控制GPRS模块,用VC6.0编写程序发送彩信,简单就行,有的大侠拜托了

问题描述 PC直接控制GPRS模块,用VC6.0编写程序发送彩信,简单就行,有的大侠拜托了 电脑连接一个 GPRS模块,要求用C语言编程控制GPRS模块发送彩信,应该包含彩信封装等内容,希望能有人帮帮忙,可以的话程序发我邮箱:Lzm11211109@163.com.并告知使用的硬件是什么, 谢谢各位大侠了. 解决方案 http://download.csdn.net/download/qianshuyuankk/4800261 解决方案二: 短信猫如何发彩信? 短信猫可以发彩信吗? 这个,得看短

easyui-Easyui datagrid IE下 行编辑器中控件会随滚动条浮动

问题描述 Easyui datagrid IE下 行编辑器中控件会随滚动条浮动 解决方案 什么版本的easyui?1.4.1没有你说的问题..你的layout是全屏的还是设置了容器而已 解决方案二: 在火狐下无此问题,另外启用行编辑器时候整个行长度会变长一些,这个问题存在于所有浏览器另外 我的datagrid 外面有一层 layout布局. 解决方案三: 申报编号 项目名称 申报单位 协作单位 投资总额 已完成投资额 申报补助额 项目状态 项目内容 width=""70"&q

jQuery实现带有上下控制按钮的简单多行滚屏效果代码_jquery

本文实例讲述了jQuery实现带有上下控制按钮的简单多行滚屏效果代码.分享给大家供大家参考.具体如下: 这里使用了jQuery插件来实现最简单的多行文字滚屏效果,还带有上下滚动控制按钮,卷动速度,数值越大,速度越慢(毫秒),滚动的时间间隔是(毫秒),每次滚动的行数,默认为一屏,即父容器高度-- 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-up-down-scroll-src-style-codes/ 具体代码如下: <!DOCT

java简单的文本编辑器

import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import javax.swing.text.*; //简单的文本编辑器 public class EditorDemo extends JFrame {  JTextPane textPane = new JTextPane(); //文本窗格,编辑窗口  JLabel statusBar = new JLabel(); //

eko 0.6.1发布 简单的声音编辑器

eko 是一个简单的声音编辑器,基于QT.libsndfile 和 libsample rate. eko 0.6.1该版本增加了支持Unicode文件名. 软件信息:http://eko.sourceforge.net/ 下载地址:http://sourceforge.net/projects/eko/files/eko/eko-0.6.1.tar.bz2/download