堆栈的应用--行编辑程序

//均已调试通过,编译器为DEV C++

//行编辑程序
#include <stdio.h>
#define Stack_Size 100
#define MAX 500
typedef struct {
        char *top;
        char *base;
        int stacklength;
        }Sqstack,*Pstack;

                                      
 void InitStack(Pstack S)
      {
           S->base=(char *)malloc( Stack_Size*sizeof(char));
           if(!S->base)
               exit(1);
            S->top=S->base;
            S->stacklength=Stack_Size;
      }
void Push(Pstack S,char ch)
      {
           if(S->top-S->base>=Stack_Size)
               exit(1);
           *(S->top++)=ch;
      }
void Pop(Pstack S)
      {
            if(S->base==S->top)
              exit(1);
             S->top--;
      }
 /*int PopGet(Pstack S,char *ch)
      {
            if(S->base==S->top)
              exit(1);
              *ch=*(--S->top);
      } */
void Clear(Pstack S)
     {
           S->base=S->top;
     } 
 void Destroy(Pstack S)
      {
               free(S->base);
               S->top=S->base;
      }           
    
                               
int main()
{
    int i,j;
    char ch;
    Sqstack S;
    char *p;   //注意类型
    char Array[MAX];       
    FILE *fp;
    InitStack(&S);    
    printf("please input string:/n");
    while((ch=getchar())!='/n') {
           switch(ch) {
                      case'#':Pop(&S);
                              break;
                     
case'@':Clear(&S);
                              break;
                      default:Push(&S,ch);
                            
                      }
           }
    for(p=S.base,i=0;p<S.top;p++,i++)
          Array[i]=*p;
                                    
    if((fp=fopen("myfile.txt","ab"))==NULL)
         {
                  printf("Can  not open the file!/n");                     
                  exit(1);
         }
     for(j=0; j<i;j++)
          fputc(Array[j],fp);
       fputc('/n',fp); //在输入完一段数据之后输入一个回车给磁盘文件        
     Destroy(&S);  
     fclose(fp); //否则提示:另一个程序正在使用此文件,进程无法访问 
        return 0;
}
                                 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值