當前位置:成語大全網 - 書法字典 - 如何用C語言制作記事本

如何用C語言制作記事本

# include & ltstdio.h & gt

# include & ltmalloc.h & gt

# include & ltstring.h & gt

# include & ltstdlib.h & gt

# include & ltctype.h & gt

#定義NULL 0

#定義最大100

typedef結構lnode{

計費日期【最大值】;//存儲數據

struct lnode * prior//前驅

struct lnode * next//繼任者

int數字;//記錄壹個節點的字符數!如果是頭節點,記錄他的節點數。

int quese//記錄節點在鏈表中的位置。

} lnodetype

lnodetype * l;//設置兩個全局變量,即頭節點指針和尾節點指針。

lnodetype * end

/* * * * * * * *該函數用於初始化* * * * * * * *//

int iniatelist(lnodetype * * l,lnodetype ** end)

{

(* l)=(lnode type *)malloc(sizeof(lnode type));

if(* l)= = NULL)

{

Printf(“內存空間不足!節目要退出了!”);

返回0;

}

(* l)-》;prior =(* l)-》。next = NULL//這是壹個雙向鏈表。

(* l)-》;number =(* l)-& gt;quese = 0;

(* end)=(* l);

Printf(“程序初始化完成!“);

返回0;

}

/* * * * * * * *此函數用於創建壹個節點並插入* * * * * * *//

內部鏈接(lnodetype ** l,lnodetype ** end)

{

lnodetype * s;

s =(lnode type *)malloc(sizeof(lnode type));

if(s = = NULL ){

Printf(“內存空間不足,程序即將退出!“" ) ;

返回0;

}

(* end)-》;next = s;

s-& gt;prior =(* end);

(* end)=(* end)-& gt;接下來;

(* l)-》;數字++;//增加壹個節點,第壹個節點的數量將增加1。

s-& gt;quese =(* l)-& gt;號碼;//這是鏈表中記錄節點的位置。

printf(“% d line“,s-》;quese);//這是節點在整個鏈表中的位置。

獲取(s-& gt;日期);

s-& gt;number = strlen(s-& gt;日期);

返回0;

}

/* * * * * * * *這是打印鏈表的功能* * * * * * * *//

內部打印(lnodetype ** l,lnodetype ** end)

{

lnodetype * p;

int I;

int j = 0;

int couter =(* l)-& gt;號碼;

p =(* l)-》;接下來;

for(I = 0;我& ltcouteri++){

printf(“% d line“,I+1);

j = 0;

while((p-& gt;date【j】& gt;=‘a‘amp;& ampp-》;日期【j】& lt;=‘z‘)| |

(p-》;date【j】& gt;=‘A‘amp;& ampp-》;日期【j】& lt;=‘z‘)| |

p-》;date【j】& gt;=‘0‘和amp& ampp-》;日期【j】& lt;='9')

{

printf(“% c“,p-& gt;date【j】);

j++;

}

printf(“n“);

p = p-& gt;接下來;

}

返回0;

}

//* * * * * *此函數用於查找和編輯相應的行* * * * * * * * *//

int search(lnodetype * * l,lnodetype ** end)

{

int數字;

scanf(“% d“,& amp數量);

int I;

lnodetype * p;

p =(* l)-》;接下來;

for(I = 0;我& lt數字-1;i++)

p = p-& gt;接下來;

printf(“% d line“,number);

獲取(p-& gt;日期);

返回0;

}

//* * * * * * *這是在文本文件中搜索字符串的功能* * * * * * * * *//

int search str(lnodetype * * l,lnodetype ** end)

{

char ptr【100】;

int arrycouter

int mystrcmp(char *,char *,int);

printf(“好!現在輸入您要查找的字符串!”) ;

scanf(“% s“,ptr);

arry couter = strlen(ptr);

lnodetype * s;

s =(* l)-& gt;接下來;

char * p;

int I = 1;

int couter = 0;

int number =(* l)-& gt;號碼;

p =(char *)s-& gt;日期;

同時(我& amp& amp數量){

// i=1是的,沒有找到證明,繼續搜索到第二個節點。

同時(我& amp& amp((* p & gt=‘a‘)& amp;& amp(*p <。=‘z‘))| |(* p & gt;=‘A‘)& amp;& amp(*p <。=‘Z’)))){

I = mystrcmp(p,ptr,arry couter);

if(I = = 1 ){

Printf(“字符串已經位於第%d行,以第%d個字符開始。“,s-》;quese,couter+1);

I = 0;

}

其他

{

p++;

couter++;

I = 1;

}

}

s = s-& gt;接下來;

p =(char *)s-& gt;日期;

號碼-;

}

if(I = = 1)

Printf(“該文檔中不存在字符串!“);

返回0;

}

/* * * * * * * * *(1)該函數用於實現* * * * * * * *//

int exit unsave(lnodetype * * l,lnodetype ** end)

{

lnodetype * s;

while(* l)!=(* end)){//如果不保存,最好釋放所有節點的空間以節省空間。

s =(* end);

(* end)=(* end)-& gt;先驗;

免費;

}

返回0;

}

/* * * * * * *(2)該函數用於實現* * * * * * * * *的功能//

int quitandsave(lnodetype * * l,lnodetype ** end)

{

FILE * fp

char ch

char文件名【20】;

lnodetype * p;

int I;

int j;

int couter =(* l)-& gt;號碼;

p =(* l)-》;接下來;

Printf(“請輸入文件名:“);

scanf(“% s“,文件名);

if((FP = fopen(filename,“w“))= = NULL){

Printf(“文件無法打開!n”);

返回0;

}

for(I = 0;我& ltcouteri++){//有幾個節點就存儲多少次。

ch = p-& gt;日期【0】;

j = 1;

while(ch!= '\0'){

fputc(ch,FP);

ch = p-& gt;日期【j】;

j++;

}

p = p-& gt;接下來;

fputc(‘#‘,FP);//請註意,結束符號添加在每個節點之後。

}

fputc(‘@‘,FP);//整個文件被關閉。

fclose(FP);//註意關閉文件。

返回0;

}

//* * * * * * *由於庫函數提供的函數比較字符串不符合要求,我寫了壹個* * * * * * * *

int mystrcmp(char * p,char * sour,int number)

{

同時(數字& amp& amp(* p)=(* sour)& amp;& amp

((* p & gt=‘a‘)& amp;& amp(*p <。=‘z‘))| |(* p & gt;=‘A‘)& amp;& amp(*p <。=‘Z’)))){

p++;

sour++;

號碼-;

}

如果(數字== 0)

返回1;

其他

返回0;

}

//* * * * * * * * *該函數用於實現統計字符串函數* * * * * * *//

int碼字(lnodetype ** l,lnodetype ** end)

{//考慮到只統計壹行字沒有意義,統計全文。

int yes = 1;//這是輸入單詞的標誌。

int no = 0;//單詞外的符號

int i,j,inaword,count = 0;

inaword = no

lnodetype * s =(* l)-& gt;接下來;

for(j = 0;j & lt(* l)-》;號碼;j++){

for(I = 0;(s-》;日期【I】& gt;=‘a‘amp;& amps-& gt;日期【I】& lt;=‘z‘)| |

(s-》;日期【I】& gt;=‘A‘amp;& amps-& gt;日期【I】& lt;=‘z‘)| |

(s-》;日期【I】& gt;=‘0‘和amp& amps-& gt;日期【I】& lt;='9' ) ||

(s-》;date【I】= =““);i++)

{

if(s-》;日期【我】==““)

inaword = no

其他

if(in word = = no)

{

inaword = yes

count++;//計算字數

}

}

s = s-& gt;接下來;

in word = 0;//註意這裏,將符號設置為0!

}

printf(“n text ^ 1 * * *有%d行“,(* l)-& gt;數量);

printf(“n此文本有%d個單詞!“,計數);

返回計數;

}

/* * * * * * * *此函數用於計算文本的行數* * * * * * *//

int line couter(lnodetype * * l,lnodetype ** end)

{

int couter

couter =(* l)-& gt;號碼;

返回couter

}

/* * * * * * * * *該功能是所有功能中的壹個菜單功能* * * * * * * * *//

int edit menu(lnodetype * * l,lnodetype ** end)

{

char選擇;

char * p =“cls“;

int I = 1;//這兩個變量用於控制循環。

int j = 1;

系統(p);

prin(& amp;(* l);(* end));

while(j ){

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * e:編輯相應的行* * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *問:退出編輯* * * * * * * * * * * * * *。

scanf(“% c“,& amp選擇);

scanf(“% c“,& amp選擇);//莫名其妙的問題,需要兩條request input語句才能停止!

開關(選擇)

{

案例“e ”:

I = 1;

當(我)

{

搜索(amp(* l);(* end));

系統(p);

prin(& amp;(* l);(* end));

printf(“n 1繼續編輯0結束編輯n“);

scanf(“% d“,& amp我);

}

}

打破;

案例:{

I = 1;

當(我)

{

search str(& amp;(* l);(* end));

getchar();

getchar();

系統(p);

prin(& amp;(* l);(* end));

printf(“n 1繼續搜索0並結束搜索n“);

scanf(“% d“,& amp我);

}

}

打破;

案例“t ”:

cout word(& amp;(* l);(* end));

getchar();

}破;

默認值:返回0;

}

系統(p);

prin(& amp;(* l);(* end));

printf(“n 1“);

scanf(“% d“,& ampj);

if(j = = 1)

系統(p);

其他

返回0;

}

返回0;

}

/* * * * * * * *實現第壹個模塊:新建壹個空白文檔* * * * * * *//

int newtext(lnodetype * * l,lnodetype ** end)

{

Printf(“新文本文件:n“);

int I = 1;

char judstr【MAX】;

lnodetype * temp

char判斷;

char * p =“cls“;

while(1 ){

鏈接(& amp(* l);(* end));

jud =(* end)-》;日期【0】;

if(jud = =‘5‘){//輸入‘5‘結束壹切。

temp =(* end);

(* end)=(* end)-& gt;先驗;

免費(臨時);

while(1 ){

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * *退出:不保存即退出* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * QAS:退出並保存* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * * * * CON:繼續輸入!* * * * * * * * * * * * * * * * * * * * * * * * * * n“);

gets(judstr);

如果(!strcmp(judstr,“out“))

{

退出保存(& amp(* l);(* end));

返回0;

}

其他

如果(!strcmp(jud str,“qas“)

{

quitandsave(& amp;(* l);(* end));

返回0;

}

其他

如果(!strcmp(judstr,“edit“))

{

editmenu(l,end);

返回0;

}

系統(p);

}

返回0;

}

}

返回0;

}

//* * * * * * *這是加載文件的功能* * * * * * * *//

int loadtaxt(char * filename)

{

FILE * fp

lnodetype * l;

char ch

int I = 0;

char * p =“cls“;

char judstr【MAX】;

lnodetype * head

lnodetype * end

iniatelist(& amp;頭像& ampend);

l =端=頭;

if((FP = fopen(filename,“r+“))= NULL){

Printf(“文件無法打開!n“);

返回0;

}

ch = fgetc(FP);

while(ch!= '@' ){

lnodetype * s;

s =(lnode type *)malloc(sizeof(lnode type));

if(s = = NULL ){

Printf(“內存空間不足,程序即將退出!“" ) ;

返回0;

}

end-》;next = s;

s-& gt;先驗=結束;

end = end-& gt;接下來;

l-》;數字++;

s-& gt;quese = l-& gt;號碼;

printf(“% d line“,s-》;quese);

while(ch!= '#'){

s-& gt;date【I】= ch;

ch = fgetc(FP);

i++;

}

I = 0;

while((end-& gt;日期【I】& gt;=‘a‘amp;& ampend-》;日期【I】& lt;=‘z‘)| |

(end-》;日期【I】& gt;=‘A‘amp;& ampend-》;日期【I】& lt;=‘z‘)| |

(end-》;日期【I】& gt;=‘0‘和amp& ampend-》;日期【I】& lt;='9' ) ||

(end-》;date【I】= =““))

{

printf(“% c“,end-& gt;date【I】);

i++;

}

end-》;date【I】=“\ 0“;//註意,最好將此添加到節點中,以便退出保存函數知道此節點已經結束。

printf(“n“);

I = 0;

ch = fgetc(FP);

}

fclose(FP);

printf(“n文件加載成功!n“);

while(1 ){

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * QAS:退出並保存* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

printf(“* * * * * * * * * * * * * * * * * * * * * * CON:繼續輸入!* * * * * * * * * * * * * * * * * * * * * * * * * * n“);

scanf(“% s“,judstr);

如果(!strcmp(judstr,“out“))

{

退出保存(& ampl & amp;end);

返回0;

}

其他

如果(!strcmp(jud str,“qas“)

{

quitandsave(& amp;l & amp;end);

返回0;

}

其他

如果(!strcmp(judstr,“edit“))

{

編輯菜單l & amp;end);

返回0;

}

系統(p);

}

返回0;

}

//* * * * * * *主要功能* * * * * * * * *//

無效總管(無效)

{

//iniatelist(& amp;l & amp;end);

//new text(& amp;l & amp;end);

char文件名【MAX】;

scanf(“% s“,文件名);

loadtaxt(文件名);

}