| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 499 人关注过本帖
标题:行编辑程序问题 记事本 没有内容
只看楼主 加入收藏
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
结帖率:8.33%
收藏
已结贴  问题点数:10 回复次数:1 
行编辑程序问题 记事本 没有内容
#include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
 
 #define STACK_INIT_SIZE 10
 #define STACKINCREMENT   2
 #define    OK      1
 #define    FALSE 0
 
 typedef int SElemType;
 typedef int Status;
 
 FILE *fp;
 
 typedef struct SqStack
 {
     SElemType *base;
     SElemType *top;
     int     stacksize;
 }SqStack;
 
 Status InitStack(SqStack *S)
 {
     (*S).base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
     if(!(*S).base)
         exit(OVERFLOW);
     (*S).top = (*S).base;
     (*S).stacksize = STACK_INIT_SIZE;
     return OK;
 }
 
  Status DestroyStack(SqStack *S)
  {
    free((*S).base);
    (*S).base=NULL;
    (*S).top=NULL;
    (*S).stacksize=0;
    return OK;
  }
 
  Status ClearStack(SqStack *S)
  {
    (*S).top=(*S).base;
    return OK;
  }
 
  Status Push(SqStack *S,SElemType e)
  {
    if((*S).top-(*S).base>=(*S).stacksize)
    {
      (*S).base=(SElemType *)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
      if(!(*S).base)
        exit(OVERFLOW);
      (*S).top=(*S).base+(*S).stacksize;
      (*S).stacksize+=STACKINCREMENT;
    }
    *((*S).top)++=e;
    return OK;
  }
 
  Status Pop(SqStack *S,SElemType *e)
  {
    if((*S).top==(*S).base)
      return FALSE;
    *e=*--(*S).top;
    return OK;
  }
 
 
  Status StackTraverse(SqStack S,Status(*visit)(SElemType))
  {
    while(S.top>S.base)
      visit(*S.base++);
    printf("\n");
    return OK;
  }
 
  Status Copy(SElemType c)
  {
    fputc(c,fp);
    return OK;
  }
 
 
 void LineEdit()
 {
     SqStack S;
     SElemType ch,c;
     InitStack(&S);
     printf("请输入一个文本文件,^Z结束输入:\n");
     ch=getchar();
     while(ch!=EOF)
     {
      while(ch!=EOF&&ch!='\n')
      {
        switch(ch)
        {
          case '#':Pop(&S,&c);
                   break;
          case '@':ClearStack(&S);
                   break;
          default :Push(&S,ch);
        }
        ch=getchar();
      }
     StackTraverse(S,Copy);
     ClearStack(&S);
     fputc('\n',fp);
     if(ch!=EOF)
        ch=getchar();
     }
     DestroyStack(&S);   
 }
 
 void main()
 {
     fp = fopen("ED.txt","w");
     if (fp)
     {
      LineEdit();
      fclose(fp);
     }
    else
      printf("建立文件失败!\n");
 
 }记事本没有内容
搜索更多相关主题的帖子: 记事本 编辑 include 
2013-01-26 22:08
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:10 
2013-01-28 22:37
快速回复:行编辑程序问题 记事本 没有内容
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014873 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved