论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

编辑器的改进

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:37:31

注:续网友 hua 之后,网友 linuxhero 在讨论区发布了他改进 hua 编写的编辑器程序,并消除了文件存储的乱码问题,本站测试了这个程序,效果不错,希望两位网友再接再励不断地把这个编辑器完善起来,同时也谢谢两位网友对非常空间的支持!

-----------------------------------------------------------

作者:linuxhero

我的方法是对数组逐个附值,而不是采用串连接,消除了文件存储乱码的问题,同时还改进了删除的功能,下面是修改后的源代码:

#include<unistd.h>
#include<stdio.h>
#include<curses.h>

#define STARTX 1
#define STARTY 1

void initial()
{
initscr();
cbreak();
nonl();
noecho();
intrflush(stdscr,FALSE);
keypad(stdscr,TRUE);
refresh();
}

int main(int argc,char *argv[])

{
int x=STARTX;
int y=STARTY;
int ch,i,net[2000],sizefile=0;
/* net[2000] 中的2000为文件最大行数 */
char name[200000]; /* 设置文件最大容量 */
FILE *fp;

if(argc==1 || argc>2) {
printf("please input:./edit file\\nexit:Esc\\n");
}

if(argc==2) {
fp=fopen(argv[1],"w");
initial();

//box(stdscr,ACS_VLINE,ACS_HLINE);
move(0,30);
printw("edit:%s",argv[1]);
refresh();

move(x,y);
do{
ch=getch();
switch(ch){
case KEY_UP:
if(y>1) --y;
move(y,x);
break;

case KEY_DOWN:
++y;
break;

case KEY_RIGHT:
++x;
break;

case KEY_LEFT:
if(x>1) --x;
break;

case '\\r':
++y;
x=1;
move(y,x);
insertln();
break;

case '\\t':
x+=4;
break;

case KEY_BACKSPACE:
if(x>1) --x;
move(y,x);
/* 删除的控制 */
if (x>1) {
delch();
} else {
addch(' ');
}
break;

case KEY_DC:
delch();
break;

case 27:
fwrite(&name,sizeof(name),1,fp);
endwin();
/* 显示数组存储的内容 */
printf("this is name:%s\\n",name);
exit(0);

default:
insch(ch);
/* 将输入的字存入数组 */
if (y==1) {
name[x-1]=ch;
name[x]='\\0';
} else {
for(i=1;i<y;i++) {
sizefile=net[i]+sizefile;
}
name[sizefile+x-1]=ch;
name[sizefile+x]='\\0';
sizefile=0;
}
net[y]=x;
x++;
break;
}
move(y,x);
}while(1);
}
}
上一篇:{技巧}编辑器篇:回车断行的问题 人气:4356
下一篇:{技巧}完善编辑器雏形 人气:6080
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058