date[j] ) ;j++ ;} printf ("n") ;p = p->next ;} return 0 ;} //***这个查找和编辑相应行的函数***// int search (lnodetype ** l, lnodetype ** end ){ int number ;scan..." />

C语言编写记事本的代码怎么写?

printf ( "%c" , p->date[j] ) ;j++ ;} printf ("n") ;p = p->next ;} return 0 ;} //***这个查找和编辑相应行的函数***// int search (lnodetype ** l, lnodetype ** end ){ int number ;scan...
C语言编写记事本的代码怎么写?
给你贴出两种代码,自己喜欢哪个用哪个。涉及到哪些知识就自己在熟悉代码的时候发觉了。 ---------------------------------------------------------------------
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#define NULL 0
#define MAX 100

typedef struct lnode{

char date[MAX]; //存放数据
struct lnode * prior ; //前驱
struct lnode * next ; //后继
int number ; //记录一个节点的字符数!如果是头节点就记录他的节点个数
int quese ; //记录节点在链表中的位置

}lnodetype;

lnodetype * l ; //设置两个全局变量,分别是头节点指针和尾节点指针
lnodetype * end ;

//**********这个函数是用来初始化的**********//
int iniatelist (lnodetype ** l , lnodetype ** end)
{

(*l) = (lnodetype *)malloc (sizeof (lnodetype) ) ;
if ( (*l) == NULL )
{

printf ("没有只够的内存空间!程序即将退出!");
return 0 ;

}

(*l)->prior =(*l)->next = NULL ; //这是双链表
(*l)->number = (*l)->quese = 0;
(*end) = (*l) ;

printf ("程序初始化完毕!");
return 0;

}

//**********这个函数是用来建立节点,并且插入元素的**********//
int link(lnodetype ** l, lnodetype ** end)
{

lnodetype *s ;
s = (lnodetype *)malloc ( sizeof (lnodetype) ) ;
if ( s == NULL ){

printf ("内存空间不够,程序即将退出!") ;
return 0 ;

}

(*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) ;
return 0 ;

}

//**********这个是打印链表的函数**********//
int prin (lnodetype ** l, lnodetype ** end)
{

lnodetype * p ;
int i ;
int j = 0;
int couter = (*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 ("n") ;
p = p->next ;

}

return 0 ;

}

//*********这个查找和编辑相应行的函数**********//
int search (lnodetype ** l, lnodetype ** end )
{

int number ;
scanf ("%d" , &number) ;
int i ;
lnodetype * p ;
p = (*l)->next ;

for ( i=0; i<number-1; i++ )
p = p->next ;

printf ("%d行" , number ) ;
gets (p->date) ;
return 0 ;

}

//**********这个是在文本文件里搜索字符串的函数**********//
int searchstr(lnodetype ** l , lnodetype ** end)
{

char ptr[100] ;
int arrycouter ;
int mystrcmp( char *, char * , int ) ;

printf ( "ok!现在输入你查找的字符串!" ) ;
scanf ( "%s" , ptr ) ;
arrycouter = strlen (ptr) ;
lnodetype * s ;
s = (*l)->next ;
char * p ;

int i = 1 ;
int couter = 0 ;
int number = (*l)->number ;
p = (char *)s->date ;

while ( i && number ){

// i=1是,证明没有找到,向第二个节点继续寻找

while ( i && ( ( (*p >= 'a') && (*p <= 'z') ) || ( (*p >= 'A') && (*p <= 'Z') ) ) ){

i = mystrcmp ( p , ptr , arrycouter );

if ( i == 1 ){

printf ("字符串已经在第%d行,第%d个字符开始,",s->quese, couter+1 );
i = 0 ;
}
else
{
p++ ;
couter++;
i = 1 ;
}

}

s = s->next ;
p = (char *)s->date ;
number -- ;

}

if ( i == 1 )
printf ("字符串在本文档中不存在!");
return 0 ;

}

//**********(1)这个函数是用来实现退出不保存功能的**********//
int exitunsave(lnodetype ** l, lnodetype ** end)
{

lnodetype * s ;
while( (*l) != (*end) ){ //如果不保存的话,最好是把节点的空间都释放,节省空间

s = (*end) ;
(*end) = (*end)->prior ;
free( s ) ;

}

return 0 ;

}

//**********(2)这个函数是用来实现退出但保存功能的**********//
int quitandsave( lnodetype ** l , lnodetype ** end )
{

FILE * fp ;
char ch ;
char filename[20] ;
lnodetype * p;
int i ;
int j ;
int couter = (*l)->number ;

p = (*l)->next ;

printf ("请输入文件名:") ;
scanf ("%s" , filename ) ;

if ( (fp = fopen( filename , "w" )) == NULL ){

printf ("文件不能打开!n");
return 0 ;

}

for ( i=0; i<couter; i++ ){ //有几个节点就进行多少次的存贮

ch = p->date[0] ;
j = 1 ;

while (ch != '\0'){

fputc (ch , fp) ;
ch = p->date[j] ;
j++ ;

}

p = p->next ;
fputc ( '#' , fp ) ; //注意在每个节点的后面加上结束的符号

}

fputc ( '@' , fp ) ; //整个文件关闭的标志
fclose ( fp ) ; //注意关闭文件,
return 0 ;

}2013-07-23
到csdn去看看~给你个源码的网址~http://topic.csdn.net/t/20050622/09/4098180.html2013-07-23
mengvlog 阅读 749 次 更新于 2025-07-20 08:31:44 我来答关注问题0
  •  翡希信息咨询 怎么利用记事本来编程

    新建记事本文件:打开记事本软件。新建一个记事本文件,并可以将其临时命名为如“123”。编写C语言代码:在新建的记事本文件中,输入你的C语言代码。例如:“`c#include int main { printf; return 0; } “` 注意:确保代码语法正确,包括头文件包含、函数定义和语句结束符等。3. ...

  •  深空游戏 如何利用记事本进行c语言编程

    1、记事本 新建一张记事本,修改名称为【hello world】,如下图所示:2、编写代码:include stdio.h main() { printf(hello worldn);} 3、保存记事本 然后保存记事本,修改后缀名为【.c】,如下图所示:4、就会变成C语言代码了,如下图所示:

  •  翡希信息咨询 怎么利用记事本来编程

    打开记事本,新建一个文本文件。可以将文件命名为任意名称,例如“123”,但此时文件后缀应为“.txt”。编写C语言代码:在记事本中输入C语言代码。例如:c#include void main { printf;} 注意:代码中的语法必须正确,包括头文件包含、函数声明、括号匹配等。3. 保存文件并修改后缀名: 点击...

  •  阿暄生活 用记事本怎么编辑,运行c语言

    最简单的方式就是安装GCC编译器,在记事本编写C语言程序,然后再在命令行用GCC编译运行,下面我简单介绍一下实现过程,感兴趣的朋友可以尝试一下:01 安装GCC编译器 这里推荐直接安装MinGW,一个集成编译调试工具,集成了常见的GCC、G++、GDB等命令,可以轻松编译运行C语言程序,下载的话,直接到官网上下载...

  •  翡希信息咨询 怎么利用记事本来编程

    新建记事本文件:打开记事本软件。新建一个记事本文件,可以将其命名为任意名称。编写C语言代码:在记事本中输入你的C语言代码。例如:“`c#include void main { printf; } “` 注意:确保代码语法正确,包括正确的头文件引用、函数定义和语句结束符等。3. 保存文件并修改后缀名: 点击...

檬味博客在线解答立即免费咨询

代码相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部