教教我这个弱女子吧

laweike 2001-12-20 06:04:10
这个程序段书上已经有了一部分,可是我老是不能完全实现,都怪平时零食吃多了

程序要求当输入#时就取消#前的一个字符,当输入@时就取消@前的一行字符相当于一个文本编辑工具了。相信大家对于这个easy的冬冬应该不会有难度,可是帮帮我嘛


#include <stdio.h>
typedef struct
{
char *base;
char *top;
int stacksize;
}sqstack;
main()
{
void lineedit();
char ch;
printf("\n**************************************************************");
printf("\nThis is a program of editing note producing by Yingying^_^.");
printf("\nPress '#' to backspace,");
printf("\nPress '@' to backline.");
printf("\nPress '$' to end.");
lineedit();
}
void lineedit()
{ sqstack s;
char ch,c;
initstack(sqstack s);
ch=getchar();
while(ch!='$')
{
while(ch!='$'&&ch!='\n')
{
switch(ch)
{
case '#':pop(s,c);
case '@':clearstack(s);
default: push(s,ch);
}
ch=getchar();
}
clearstack(s);
if(ch!='$')
ch=getchar();
}
destroystack();
}
int initstack(sqstack s)
{
s.base=(char *)malloc(100*sizeof(char));
if(!s.base) exit(-1);
s.top=s.base;
s.stacksize=100;
return(1);
}
int pop(sqstack s,char e)
{
if(s.top==s.base)
return(0);
e=*--s.top;
return(1);
}
int push(sqstack s,char e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(char *)realloc(s.base,s.stacksize+10)*sizeof(char));
if(!s.base) exit(-1);
s.top=s.base+s.stacksize;
s.stacksize+=10;
}
*s.top++=e;
return(1);
}
clearstack(sqstack s)
{
while(s.top!=s.base)
pop(s,char m);
}
...全文
96 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
laweike 2001-12-22
  • 打赏
  • 举报
回复
不帮忙就算了嘛,
干吗说这么一堆酸溜溜的话,
有什么了不起的
one_add_one 2001-12-20
  • 打赏
  • 举报
回复
经典
one_add_one 2001-12-20
  • 打赏
  • 举报
回复
在弱后面少了个智字:)
ifrank 2001-12-20
  • 打赏
  • 举报
回复
int destroystack()
{...}
太多了,哪位心软的gg,jj继续帮着改吧。我还要复习明天转正考的英语,走喽...
mathe 2001-12-20
  • 打赏
  • 举报
回复
在弱后面少了个智字:)
ifrank 2001-12-20
  • 打赏
  • 举报
回复
initstack(s);
ifrank 2001-12-20
  • 打赏
  • 举报
回复
case '#':pop(s,c);break;
case '@':clearstack(s);break;
default: push(s,ch);
ifrank 2001-12-20
  • 打赏
  • 举报
回复
好可怜:]

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧