动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息

本月文章推荐
.c语言中时间陷阱的实现.
.在Visual Baisc.NET 2005中使用泛.
.C语言库函数(Q类字母).
.深入浅出话异常.
.C语言编程.
.C语言初级讲座之二.
.C++Builder中实现控件数组的功能.
.自己的邮件自己发.
.高质量C++/C编程指南 --&nb.
.数据结构学习(C++)之二叉树.
.makefile规则.
.发布源码:高效的Esmtp,带验证,.
.VC++下使用ADO编写数据库程序(1).
.如何对数据流 INSERT、APPEND.
.设备驱动.
.WinHelp API命令方法.
.C语言入门之数据类型(6).
.开发 C++ Builder&nbs.
.深度探索C++对象模型(7).
.链表的c语言实现(四).

汉字行编辑程序

发表日期:2008-3-8 |


我写了一个汉字行编辑程序,请各位多多指教,找出本程序的不足,以提高本程序的功能,!   程序如下:     #include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"
#define len 4
#define LINESIZE 80   /*每行长度为80个字符*/
strUCt TEXT
{
 struct TEXT *prior;
 char str[LINESIZE+1];  /*包括 '\0' 在内,设置长度为LINESIZE+1*/
 struct TEXT *next;
};
struct TEXT *TPTR,*BPTR,*KPTR,*QPTR,*SPTR,*YPTR,*XPTR,*FPTR;
struct TEXT *ptr,*work;
int CHG,ERR,CMP,IND,CTR,i,NUM;
char ch,BUF;
char IN[LINESIZE+1],NUMD[len],MAT[LINESIZE],REP[LINESIZE],temp[LINESIZE];
void main()  /*#1 主要起调度作用*/
{
 void IN99v();
 void READ_LINE();
 void INPUT();
 void TOP();
 void UP();
 void NEXT();
 void ENTER();
 void LIST();
 void DELETE();
 void REPLACE();
 void FIND();
 void INSERT();
 void COPY();
 void STORE();
 void WR99vE_LINE();
 clrscr();
 IN99v();
 while(1)
 {
  if(IND==0)
   printf("\n-");  /*命令提示符*/
  READ_LINE();
  i=0;
  if(IND!=0)
   INPUT();
  else
  {
   ch=IN[0];
   if(ch=='T'ch=='t')
    TOP();
   else if(ch=='U'ch=='u')
    UP();
   else if(ch=='N'ch=='n')
    NEXT();
   else if(ch=='E'ch=='e')
    ENTER();
   else if(ch=='L'ch=='l')
    LIST();
   else if(ch=='D'ch=='d')
    DELETE();
   else if(ch=='R'ch=='r')
    REPLACE();
   else if(ch=='F'ch=='f')
    FIND();
   else if(ch=='I'ch=='i')
    INSERT();
   else if(ch=='C'ch=='c')
    COPY();
   else if(ch=='S'ch=='s')
    STORE();
   else if(ch=='Q'ch=='q')
    exit(0);
   else
   {
    strcpy(IN,"?!\0");  /*不正确的编辑命令响应*/
    WR99vE_LINE();
   }
  }
 }
}
void IN99v()  /*#2 初始化正文编辑程序*/
{
 void WR99vE_LINE();
 printf("\n         ________________________________________");
 printf("\n               program for edit                ");
 printf("\n        T:TOP  U N:UP N N:NEXT                 ");
 printf("\n        E:ENTER L N:LIST D N:DELETE ");
 printf("\n        R /STR1/STR2/ N:REPLACE F /SFTR1/:FIND ");
 printf("\n        C N:COPY   S N:STORE    I:INSERT       ");
 printf("\n        Q:QU99v     -: the sing of order        ");
 printf("\n        -----------------------------------------");
 FPTR=(struct TEXT*)malloc(sizeof(struct TEXT));
 FPTR->prior=0;
 FPTR->next=0;
 CMP=CHG=ERR=0;
 IND=0;
 BPTR=TPTR=0;  /*无正文链*/
 KPTR=QPTR=0;  /*无工作链*/
 strcpy(IN,"ED99v!\0");
 WR99vE_LINE();
}
void READ_LINE()  /*#3 从终端接收一行正文并且把它存到缓冲器IN中 */
{
 i=0;
 BUF=getchar();
 while(i<LINESIZE && BUF!='\n')
 {
  if(BUF=='@')
  {
   if(i!=0)
   {
    if(IN[i-1]<0)
    {
     IN[--i]=' ';  /*是汉字删掉两个字节*/
     IN[--i]=' ';
    }
    else
     IN[--i]=' ';  /*不是汉字删掉一个字节*/
   }
  }
  if(BUF=='#')
   i=0;
  if(BUF<0)
  {
   IN[i++]=BUF;
   IN[i++]=getchar();
  }
  else
   if(BUF!='@' && BUF!='#')
    IN[i++]=BUF;
  BUF=getchar();
 }
 if(i>=LINESIZEBUF=='\n')
 {
  if(i==0)
   IN[i++]='\n';
  IN[i]='\0';/*存入字符串结束标志*/
 }
 fflush(stdin);
}
void WR99vE_LINE()  /*#4 把IN中的内容输出到终端*/
{
 printf("\n%s",IN);
}
void INPUT()  /*#5 从缓冲器IN取来一行正文放到正文文件中*/
{
 void GO_ED99v();
 void CONNECT();
 void INSERT_CHAIN();
 void WR99vE_LINE();
 ch=IN[0];
 if(IND==1)  /*尚未接收到正文*/
 {
  if(ch=='\n')
     GO_ED99v();  /*转到编辑模式*/
  else
  {
   if(FPTR==0)
   {
    strcpy(IN,"NOFREE!\0");
    WR99vE_LINE();
   }
   else
   {
    ptr=FPTR;  /*YPRT在此模块内主要起链接串之用*/
    XPTR=FPTR;
    strcpy(XPTR->str,IN);
    IND=2;
   }
  }
 }
 else
 {
  if(ch=='\n')  /*空行,从自由链把正文移到正文链并转到编辑模式*/
  {
   CONNECT();
   INSERT_CHAIN();
   GO_ED99v();
  }
  else
  {
   XPTR->next=(struct TEXT*)malloc(sizeof(struct TEXT));
   if(XPTR->next==0)
   {
    CONNECT();
    INSERT_CHAIN();
    strcpy(IN,"NOFREE!\0");
    WR99vE_LINE();
    GO_ED99v();  /*内存空间不足,自动转到编辑模式*/
   }
   else
   {
    XPTR=XPTR->next;
    XPTR->prior=ptr;
    ptr=XPTR;
    XPTR->next=0;
    strcpy(XPTR->str,IN);
   }
  }
 }
}
void GO_ED99v()  /*#6  转到编辑模式*/
{
 void WR99vE_LINE();
 IND=0;
 strcpy(IN,"ED99v!\0");
 WR99vE_LINE();
}
void CONNECT()  /*#7  分离后,只需让TPTR,BPTR指向自由链,但是要让FPTR指向一个新的结点,否则将失去指向*/
{
 YPTR=FPTR;
 FPTR=(struct TEXT*)malloc(sizeof(struct TEXT));
 if(FPTR!=0)
 {
  FPTR->prior=0;
  FPTR->next=0;
 }
}
void INSERT_CHAIN()  /*#8  把新输入的正文加到正文链中,紧接在当前行的后面。开始时YPTR指向输入正文的第一行,*/
{                    /*    XPTR指向最后一行。指针把原有的正文分成两部分,分别为前半和后半。*/
 if(BPTR==0)
 {
  if(TPTR==0)  /*原来没有正文链*/
  {
   TPTR=YPTR;  /*使分离出的自由链的第一行为新的正文链的第一行,自由链的最后一行为新的正文链的最后一行*/
   BPTR=XPTR;
  }
  else
  {
   XPTR->next=TPTR;
   TPTR->prior=XPTR;
 &nbs

上一篇:关于广播地址的问题 人气:333
下一篇:函数调用,__stdcall,__cdecl,__fastcall,thiscall,naked call,__pascal 人气:527
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-7 站长中国企业(公司)网站系统 v4.2
2008-9-7 PBDigg v2.0 Build 20080821
2008-9-7 玩玩小游戏FLASH系统 v2.1
2008-9-7 522QQ在线电视直播程序 v1.1
2008-9-7 Pcook cms 文章管理系统 (老Y CM
2008-9-7 仿代码小说小偷系统 v1.0
2008-9-7 百度一搜集成搜索管理系统
2008-9-7 小贤统计器 v1.0
2008-9-7 UCenter Home-中秋搏饼插件 v1.2
2008-9-7 iBlacklist通话黑名单汉化破解补
2008-9-7 EndlessWalls无尽壁纸 v1.0.4破解
2008-9-7 Dynolicious车载测量仪v1.1破解版
2008-9-7 iVoodoo巫毒娃娃1.0.1破解版
2008-9-7 iWallpape精品墙纸1.2破解版
2008-9-7 iChillout自然音效工具1.1破解版
2008-9-7 Todo计划提醒1.2破解版
2008-9-7 allRadio电台集合1.01破解版
2008-9-7 My Money个人理财1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号