• 大小: 16KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: C/C++
  • 标签: C语言  文章编辑  

资源简介

本程序是以学校数据结构与算法课程设计要求为背景,利用了C语言、数据结构知识和VC++6.0开发平台,开发的文章编辑器。源程序中本人为代码加上了明确的详细注释,适合后来者参考和提供思路。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#define N 80//文章行数
typedef struct line
{
char str[N];      //存储该行的内容 
int num;                 //用来记录行号
struct line *prior;      //用来指向前一行
struct line *next;       //用来指向下一行
 }LINE;
LINE *start;          //指向线性表的第一行
LINE *last;           //指向线性表的最后一行

int Choice(); 
int ij; 
int ch=0;
void title()
{
printf(“ ____________________________________________________\n\n“);
printf(“ ****             欢迎使用文章编辑系统           ****  \n“);
printf(“ ****         作者:   学号:      ****  \n“);
printf(“ ____________________________________________________  \n“);
}
int menu()
{
title();
printf(“|                   【 功能菜单 】                  |\n“);
printf(“|                     0.退出系统                    |\n“);
printf(“|                     1.输入文章                    |\n“);
printf(“|                     2.输出文章                    |\n“);
printf(“|                     3.删除字符                    |\n“);
printf(“|                     4.添加字符                    |\n“);
printf(“|                     5.统计数目                    |\n“);
printf(“|                     6.存储文章                    |\n“);
printf(“|                     7.打开文章                    |\n“);
printf(“-----------------------------------------------------\n“);
printf(“                   请输入一个数<0-7>:“);
}
void Output()
{
LINE *p = start;
while(p != last) //当p所指向的不是最后一行时,循环输出 
{
printf(“\n\n第%d行|%s“p->nump->str); //输出行号和字符串 
p = p->next;//p指向下一行 
}
printf(“\n\n第%d行|%s\n“last->numlast->str); //当p所指向最后一行时,输出最后一行内容 
printf(“\n“);
}
void Input()
{
LINE *info*temp;//行指针,info指向当前行,temp指向info的前驱行 
char ch;  //ch用于记录输入的字符串 
int linenumi;//行计数器i为行字符数组下标 
FILE *fp;  //文件指针 
temp = NULL; //将temp置空                      
start = (LINE*)malloc(sizeof(LINE)); //生成一行的结点空间 
info = start;//指向线性表的第一行
linenum = 1; //行号初值为1 
printf(“请输入文章内容[每行不得超过80个字符(以字符‘#‘结束)]:\n“); 
while((ch = getchar())!=‘#‘) //当接收到字符不为‘#‘ 
{
i = 0;//i为行字符数组下标初值为0 
info->str[i] = ch;//将ch即接收到的字符存储到该行中 
i++;//下标加1 
while((ch = getchar())!=‘\n‘) //从文件中读到一行字符到线性表中 
{       //一行中有多少字符就循环多少次 
info->str[i] = ch;
i++;
}
info->str[i] =‘\0‘;   
info->num = linenum++;  //行号存储在线性表中后加一 
info->next = (LINE*)malloc(sizeof(LINE));//为下一行生成一行的结点空间 
if (i>=80)  //0~79个字符 
{
printf(“每行最多输出80个字符!\n“); 
printf(“请重新输入文章!\n“);
Sleep(5000);  //休眠5秒 
system(“cls“);
title();
Input();
}
info->prior = temp;
temp = info;
info = info->next;
  } 
  temp->next = NULL;
  last = temp;
  free(info);
  start->prior = NULL;
}

int CountAll()
{
int English=0;//英文字母数目 
int Blank=0;//空格数目 
int Number=0;//数字数目
int All=0;//所有文字数目
int i=0;
LINE *p = start;
//首先输出原文章
printf(“\n|>>>                【原文章】               <<<|\n“);
while(p != last) //当p所指向的不是最后一行时,循环输出 
{
printf(“\n\n第%d行|%s“p->nump->str); //输出行号和字符串 
wh

评论

共有 条评论