C语言实现简单的文本编辑器

本文实例为大家分享了C语言实现简单的文本编辑器的具体代码,供大家参考,具体内容如下

预期实现三个功能,第一,可以对指定的行输入字符串;第二,删除指定行的字符串;第三,显示编辑器的行数和内容。

我们通过块链结构来实现本程序。“块”的含义是每个块中可以存放多个字符,“链”的含义是块与块之间通过链表结构进行连接。

IDE : Code::Blocks 17.12

Compiler : GNU GCC Compiler

/*块链结构实现简单的文本编辑器*/
#include <stdio.h>
#include <stdlib.h>
#define MAX 100

void Init();  //初始化编辑器
void input();  //对指定的行进行输入,#号结束
void Delline();  //删除指定的行
void List();  //显示文本编辑器的内容
int Menu();  //列出选择菜单并进行选择

//定义存放字符串的节点,块链结构
typedef struct node{
    char data[50];
    struct node *next;
}strnode;
//定义每行头节点
typedef struct head{
    int number;  //行号
    int length;  //字符串的长度
    strnode * next;
}headnode;
//定义有100行
headnode Head[MAX];

//函数Init()实现每行头节点的初始化
void Init(){
    int i;
    for(i=0;i<MAX;++i){
        Head[i].length=0;
    }
}

//函数Menu()实现选择菜单
int Menu(){
    int i;
    i=0;
    printf("-------------\n");
    printf("1. Input\n");
    printf("2. Delete\n");
    printf("3. List\n");
    printf("4. Exit\n");
    printf("-------------\n");
    while(i<=0 || i>4){
        printf("please choose\n");
        scanf("%d",&i);
    }
    return i;
}

//函数input(),向指定行中输入字符串
void input(){
    strnode * p;
    int i,j,LineNum;
    char ch;
    while(1){
        j=-1;
        printf("input the number of line(0~100),101-exit:\n");
        scanf("%d",&LineNum);  //输入要写入的行号
        if(LineNum<0 || LineNum>=MAX){
            return;
        }
        printf("please input,#-end\n");
        i=LineNum;
        Head[i].number=LineNum;
        Head[i].next=(strnode *)malloc(sizeof(strnode));
        p=Head[i].next;
        p->next=NULL;
        ch=getchar();
        while(ch!='#'){
            ++j;
            if(j>=50){ //如果字符串长度超过50,需要再分配一个节点空间
                p->next=(strnode *)malloc(sizeof(strnode));
                p->next->next=NULL;
                p=p->next;  //p指向新分配的节点
            }
            p->data[j%50]=ch;  //将输入的字符放入data中
            ch=getchar();
        }
        Head[i].length=j+1;  //行的长度,以字符为单位
    }
}

//函数Delline()实现对指定行的删除
void Delline(){
    strnode * p,*q;
    int i,LineNum;
    while(1){
        printf("input the number of line which do you want to delete(0~100),101-exit:\n");
        scanf("%d",&LineNum);  //输入要删除的行号
        if(LineNum<0 || LineNum>=MAX){
            return;
        }
        i=LineNum;
        p=Head[i].next;
        if(Head[i].length>0){
            while(p!=NULL){
                q=p->next;
                free(p);
                p=q;
            }
            Head[i].length=0;
            Head[i].number=0;
        }

    }
}

//函数List()将输入的内容显示在屏幕上
void List(){
    strnode *p;
    int i,j,m,n;
    for(i=0;i<MAX;++i){
        if(Head[i].length>0){
            printf("line%d",Head[i].number);
            n=Head[i].length;
            m=1;
            p=Head[i].next;
            for(j=0;j<n;++j){
                if(j>=50*m){  //以50为基准,超过一个则指向下一个节点
                    p=p->next;
                    ++m;  //节点个数
                }else{
                    printf("%c",p->data[j%50]);  //将节点中内容输出
                }
            }
            printf("\n");
        }
    }
    printf("\n");
}

int main()
{
    int sel;
    Init();  //初始化编辑器
    while(1){
        sel=Menu();
        switch(sel){  //对输入的数字进行选择
        case 1:
            input();
            break;
        case 2:
            Delline();
            break;
        case 3:
            List();
            break;
        case 4:
            exit(0);
        }
    }
    return 0;
}

测试运行结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现简易文本编辑器

    本程序要求完成一个简易文本编辑器,能够完成文本的录入.编辑.删除.查找,并能够完成文件的存取. 在文本编辑软件中把用户输入的所有文本内容作为一个字符串.虽然各种文本编辑软件的功能有强弱差别,但是基本操作都包括串的输入.修改.删除(包括整行删除和一行中的子串删除).查找.输出等.通过分析,系统应该包括以下功能: 1.具有简单的文字或图形菜单界面 2.能实现串或文本块的查找.替换.删除.插入.移动操作. 3.能实现文本文件的存盘和读取功能. 4.具有友好的界面和较强的容错能力 设计思路 1.采用的逻

  • C语言实现文本编辑器系统

    本文实例为大家分享了C语言实现文本编辑器系统的具体代码,供大家参考,具体内容如下 /*文本编辑器editor源代码*/ #include <stdio.h> #include <conio.h> #include <bios.h> #include <math.h> #define LEFT 0x4b00 /*←:光标左移*/ #define RIGHT 0x4d00 /*→:光标右移*/ #define DOWN 0x5000 /*↓键:光标下移*/ #d

  • C语言实现简单的文本编辑器

    本文实例为大家分享了C语言实现简单的文本编辑器的具体代码,供大家参考,具体内容如下 预期实现三个功能,第一,可以对指定的行输入字符串:第二,删除指定行的字符串:第三,显示编辑器的行数和内容. 我们通过块链结构来实现本程序."块"的含义是每个块中可以存放多个字符,"链"的含义是块与块之间通过链表结构进行连接. IDE : Code::Blocks 17.12 Compiler : GNU GCC Compiler /*块链结构实现简单的文本编辑器*/ #include

  • 使用Python读写文本文件及编写简单的文本编辑器

    学习raw_input和argv是学习读取文件的前提,你可能不能完全理解这个练习,所以认真学习并检查.如果不认真的话,很容易删除一些有用的文件. 这个练习包含两个文件,一个是运行文件ex15.py,一个是ex15_sample.txt.第二个文件不是脚本文件,只包括一些文本,如下: This is stuff I typed into a file. It is really cool stuff. Lots and lots of fun to have in here. 我们要做的就是打开这

  • Qt实现文本编辑器(一)

    目录 功能实现 动作(QAction)实现 菜单(Menus)实现 工具栏(ToolBars)实现 展示区域 小结(一) 在Qt中QMainWindow是一个为用户提供主窗口程序的类,包含了:菜单栏.工具栏.锚接部件.状态栏以及一个中部件.今天我就来通过实现一个简单的文本编辑器讲解下对QMainWindow的各种功能讲解. 想要完整的实现一个编辑器,所需要的功能还是比较全面的.今天主要来讲解如何构建文本编辑器,包括了:菜单栏.工具栏以及文本编辑区域. 功能实现 在QMainWindow中,菜单与

  • python基于Tkinter库实现简单文本编辑器实例

    本文实例讲述了python基于Tkinter库实现简单文本编辑器的方法.分享给大家供大家参考.具体实现方法如下: ## {{{ http://code.activestate.com/recipes/578568/ (r1) from Tkinter import * from tkSimpleDialog import askstring from tkFileDialog import asksaveasfilename from tkMessageBox import askokcance

  • C#实现简单文本编辑器

    本文实例为大家分享了C#实现简单文本编辑器的具体代码,供大家参考,具体内容如下 建立一个窗体文件,实现对文件的编辑保存和对txt文件的打开 界面设计: 程序源代码: //form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

  • vue-quill-editor富文本编辑器简单使用方法

    文章刚开始先来介绍一下vue-quill-editor富文本编辑器的简单使用,具体操作步骤如下: 安装: npm install vue-quill-editor --save main.js: import VueQuillEditor from 'vue-quill-editor' import 'quill/dist/quill.core.css' import 'quill/dist/quill.snow.css' import 'quill/dist/quill.bubble.css'

  • Javascript实现简单的富文本编辑器附演示

    复制代码 代码如下: <span style="font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

  • 分享10个程序员常用的的代码文本编辑器

    通常操作系统和软件开发包中都包含文本编辑器,可以用来编辑配置文件,文档文件和源代码. 下面是笔者总结的10个最好的免费代码文本编辑器: 1.NOTEPAD++ NOTEPAD++是一款免费又优秀的文本编辑器,支持在MS Windows环境下运行的多种编程语言.NOTEPAD++支持超过50种编程.脚本和标记语言的语法高亮显示和代码折叠,能让用户迅速减小或扩大代码段以便查阅整个文档.用户也可以手动设置当前语言,覆盖默认语言.该程序还支持自动完成某些编程语言的API子集. 官方网站:http://n

随机推荐