没有合适的资源?快使用搜索试试~ 我知道了~
用C编写的记事本(完整代码)
4星 · 超过85%的资源 需积分: 50 44 下载量 113 浏览量
2009-05-09
19:52:40
上传
评论 4
收藏 50KB DOC 举报
温馨提示
试读
19页
用C编写的记事本,来源于网络。希望这些代码能为要写记事本的朋友用作参考。
资源详情
资源评论
资源推荐
上次我在论坛里问怎么用 C 写个文本编辑器,没人理我!没办法,我只好自己写了一个,我只会基本的规则,
写的很幼稚,让大家见笑了,我发这个帖子没有其他的意思,只是想和大家一起讨论思路,我是用双链表来实
现的,一个节点存放一行的数据,然后,在每一行的最后设置一个结束字符,就是这个‘ #’,文本的结束符号
是'@'!至于功能,我在程序里已经写了注释!本来对文件目录的操作那些,我打算调用在程序里调用 DOS 命
令来实现的,呵呵,还是有点懒,我写了几行,大家自己看看吧,我是初学者,请大家不要笑我!
另外,我有个小小的要求,如果能有个高手来带带我就好了,不要误会,我不会耽误您的时间,我只是想,
如果我在学习的时候,有个人能适时的给我指个方向,好少走些弯路。呵呵,如果哪位大侠愿意,小弟感激不
尽啊!
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#deneNULL0
#deneMAX100
typedefstructlnode{
chardate[MAX];//存放数据
structlnode*prior;//前驱
structlnode*next;//后继
intnumber;//记录一个节点的字符数!如果是头节点就记录他的节点个数
intquese;//记录节点在链表中的位置
}lnodetype;
lnodetype*l; //设置两个全局变量,分别是头节点指针和尾节点指针
lnodetype*end;
//**********这个函数是用来初始化的**********//
intiniatelist(lnodetype**l,lnodetype**end)
{
(*l)=(lnodetype*)malloc(sizeof(lnodetype));
if((*l)==NULL)
{
printf("没有只够的内存空间!程序即将退出!");
return0;
}
(*l)->prior=(*l)->next=NULL; //这是双链表
(*l)->number=(*l)->quese=0;
(*end)=(*l);
printf("程序初始化完毕!");
return0;
}
//**********这个函数是用来建立节点,并且插入元素的**********//
intlink(lnodetype**l,lnodetype**end)
{
lnodetype*s;
s=(lnodetype*)malloc(sizeof(lnodetype));
if(s==NULL){
printf("内存空间不够,程序即将退出!");
return0;
}
(*end)->next=s;
s->prior=(*end);
(*end)=(*end)->next;
(*l)->number++; //增加一个节点,头节点的 number 就加 1
s->quese=(*l)->number; //这个是记录节点在链表中的位置
printf("%d 行",s->quese); //这个是节点在整个链表中的位置
gets(s->date);
s->number=strlen(s->date);
return0;
}
//**********这个是打印链表的函数**********//
intprin(lnodetype**l,lnodetype**end)
{
lnodetype*p;
inti;
intj=0;
intcouter=(*l)->number;
p=(*l)->next;
for(i=0;i<couter;i++){
printf("%d 行",i+1);
j=0;
while((p->date[j]>='a'&&p->date[j]<='z')||
(p->date[j]>='A'&&p->date[j]<='z')||
p->date[j]>='0'&&p->date[j]<='9')
{
printf("%c",p->date[j]);
j++;
}
printf(" ");
p=p->next;
}
return0;
}
//*********这个查找和编辑相应行的函数**********//
intsearch(lnodetype**l,lnodetype**end)
{
intnumber;
scanf("%d",&number);
inti;
lnodetype*p;
p=(*l)->next;
for(i=0;i<number-1;i++)
p=p->next;
printf("%d 行",number);
gets(p->date);
return0;
}
//**********这个是在文本文件里搜索字符串的函数**********//
intsearchstr(lnodetype**l,lnodetype**end)
{
charptr[100];
intarrycouter;
intmystrcmp(char*,char*,int);
printf("ok!现在输入你查找的字符串!");
scanf("%s",ptr);
arrycouter=strlen(ptr);
lnodetype*s;
s=(*l)->next;
char*p;
inti=1;
intcouter=0;
intnumber=(*l)->number;
p=(char*)s->date;
while(i&&number){
//i=1 是,证明没有找到,向第二个节点继续寻找
while(i&&(((*p>='a')&&(*p<='z'))||((*p>='A')&&(*p<='Z')))){
剩余18页未读,继续阅读
luo9168
- 粉丝: 2
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python实现基于PyTorch+Resnet构建花朵图像分类模型项目源码(高分项目).zip
- 基于神经网络CNN&ResNET的图像分类python源码(高分项目).zip
- 神经网络大作业基于两种模型CNN+RNN ResNet+Transformer公式识别项目源码+答辩PPT.zip
- Python实现基于卷积神经网络ResNet的图像分类源码+GUI界面.zip
- 螺栓计算软件(精品文档).xls
- WM8962音频编解码模块Audio语音模块Cadence16.3设计硬件(原理图+PCB)及PDF原理图.zip
- 基于OV5640摄像头接口模块Cadence16.3设计硬件(原理图+PCB)及PDF原理图.zip
- 基于SP3232芯片 TTL转RS232串口模块 Cadence16.3设计硬件(原理图+PCB)文件.zip
- Screenshot_20240509_034911_com.tencent.mtt.jpg
- 基于python实现的医学影像体脂分割+源代码+文档说明(课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1