数据结构简易文本编辑器

合集下载

学会使用电脑的文本编辑器

学会使用电脑的文本编辑器

学会使用电脑的文本编辑器现代社会,电脑已经成为人们日常生活中无法或缺的工具。

而电脑的文本编辑器作为其中的重要组成部分,具有强大的功能和方便的操作,给我们的学习、工作和生活带来了诸多便利。

本文将介绍如何学会使用电脑的文本编辑器,并探讨其在不同领域中的应用。

一、认识电脑的文本编辑器文本编辑器是一种用于创建、编辑和格式化文本的软件工具。

常见的文本编辑器包括记事本(Notepad)、WordPad、Microsoft Word、Sublime Text等。

不同的文本编辑器提供了不同的功能和操作方式,但它们的基本原理是相同的,都是用来处理和管理文字信息的工具。

二、掌握基本的文本编辑操作使用文本编辑器需要掌握一些基本的操作,包括打开文件、新建文件、保存文件、复制粘贴、撤销重做、查找替换等。

这些操作都是非常简单的,只需要通过点击按钮或使用快捷键即可完成。

熟练掌握这些基本操作,可以提高工作效率,减少错误。

三、格式化文本文本编辑器不仅可以编辑文字内容,还可以对文字进行格式化。

格式化文本包括调整字体、字号、字形、颜色等,以及添加标点符号、段落缩进、行距等。

通过合理的文本格式化,可以使文本更加美观、易读,提高文章的质量和可读性。

四、应用于办公场景在办公场景中,文本编辑器是必不可少的工具。

我们可以使用文本编辑器撰写文件、编辑报告、制作演示文稿等。

在这些场景中,除了基本的文本编辑操作,还需要了解一些高级功能,例如插入表格、图形、超链接等。

掌握这些高级功能可以使我们的工作更加丰富多样、高效快捷。

五、应用于编程开发对于编程开发人员来说,文本编辑器是最为常用的工具之一。

编程所使用的脚本、代码都是通过文本编辑器进行编写和编辑的。

不同的编程语言对应不同的文本编辑器,例如Java使用Eclipse、Python使用PyCharm等。

熟练掌握特定的文本编辑器,能够提高代码编写的速度和质量。

六、应用于写作创作文本编辑器也广泛用于写作创作领域。

Mac系统的文本编辑器推荐

Mac系统的文本编辑器推荐

Mac系统的文本编辑器推荐在日常生活和工作中,我们经常需要使用文本编辑器来处理各种文本文件。

对于Mac系统的用户来说,选择一个合适的文本编辑器非常重要,因为它能够影响我们的工作效率和使用体验。

在本文中,我将为您推荐几款在Mac系统上使用的优秀文本编辑器。

1. TextMateTextMate是一款非常受欢迎的文本编辑器,它提供了丰富的功能和高度可定制性。

TextMate支持多种语言的语法高亮显示,代码折叠,自动完成等功能,使得编码工作更加方便和高效。

此外,TextMate还支持插件的安装和配置,用户可以根据自己的需求定制编辑器的功能和外观。

2. Sublime TextSublime Text是目前为止最受欢迎的文本编辑器之一,无论是初学者还是专业人士都可以通过Sublime Text轻松地进行编码工作。

Sublime Text具有快速响应的编辑器速度、灵活的多光标编辑和强大的宏功能等特点。

此外,Sublime Text还支持丰富的插件生态系统,用户可以通过安装插件来扩展编辑器的功能。

3. AtomAtom是由GitHub开发的一款现代化的开源文本编辑器。

Atom具有直观的界面,丰富的主题和插件,以及可高度定制的编辑器设置。

Atom支持Git版本控制,内置了强大的搜索和替换功能,并且还有一个活跃的社区,用户可以在社区中分享主题、插件和代码片段。

4. Visual Studio CodeVisual Studio Code是一款由微软开发的免费开源的文本编辑器。

虽然它的名字中带有"code",但实际上它是一个功能强大的编辑器,支持多种编程语言,并且具有智能代码完成、调试、Git集成等功能。

Visual Studio Code还支持丰富的插件扩展,并且有一个活跃的社区,用户可以分享插件和主题。

5. BBEditBBEdit是一款经典的文本编辑器,适用于Mac系统。

它具有简洁、直观的界面,支持多种编码和语法高亮显示。

VB课程设计-文本编辑器

VB课程设计-文本编辑器

VB课程设计报告——文本编辑器学院名称:学生姓名:专业名称:班级:一、课程设计题目用Visual Basic程序设计语言编写一个简易的文本编辑器要求:有最基本的文本编辑功能,包括复制、剪切、粘贴、字体设置、背景颜色设置、字体颜色设置;同时拥有文本管理功能,包括打开文件、保存文件;以及完整的系统运行退出等功能,所有的操作可选择设定的快捷键。

二、课程设计目的虽然本学期的Visual Basic课程是自学的,相对于课堂学习有些不足,但通过平时的上机实验,初步掌握了VB程序设计的各种方法,学会了编写最基本的VB程序;对于完整的VB程序设计来讲是很不足的,平时掌握的只是单独的窗体(Form)程序编写,以及各种简单控件的使用,没有做到很好连贯性,所以有必要做一次完整的VB程序设计,结合所学的基本知识,使用多个窗体自成一套系统,加上各种控件的综合运用,初步设计一个合格的VB 应用程序;这样在巩固VB所学的同时,更好地学会程序设计的一些思想和方法,对于以后的编程学习或是工作有重要的实践意义。

三、课程设计说明题目为文本编辑器,即是最基本的文本编辑程序,首先必须做好文本编辑器本身的功能,然后对其完善,做成一个完整的小程序功能设计说明:功能是这个文本编辑器的核心内容,也就是程序的作用,它是用来做什么的;本程序就是用来编写文本的,编写过程中要利用到窗体(Form)一个,控件包括:RichTextBox1(超文本框)、CommonDialog(通用对话框),以及InputBox(消息框)、菜单编辑器等,。

要做的工作就是编写代码把这些控件和窗体等结合为一体,使得程序能够成为一体,顺畅运行。

本次设计在按照题目要求的前提下,为了完整地展示一个应用程序,在最初就设计为最基本的文本的编辑器,所以取名为“易记本”,就是简易记事本的简称,然后加入图标,在程序完成之后还进行了大包操作,得到应用程序的安装文件,最后安装在电脑上运行使用。

四.源代码Private Sub Command1_Click()Dim i As IntegerIf Text2.Text <> "123456" Theni = MsgBox("密码错误", 5 + vbExclamation, "警告")If i <> 6 ThenEndElseText2.Text = ""Text2.SetFocusEnd IfEnd IfForm1.HideForm2.ShowEnd SubPrivate Sub Form_Load()Text1.Text = ""Text1.MaxLength = 6Text2.Text = ""Text2.MaxLength = 6Text2.PasswordChar = "*"End SubPrivate Sub Text1_LostFocus()If Not IsNumeric(Text1.Text) Then MsgBox "帐号必须为数字", , "警告" Text1.Text = ""Text1.SetFocusEnd IfEnd SubPrivate Sub Command1_Click()Form2.HideForm3.ShowEnd SubPrivate Sub Command2_Click()Form2.HideForm4.ShowEnd SubPrivate Sub Command3_Click()Form2.HideForm5.ShowEnd SubPrivate Sub Color_Click() CommonDialog1.Action = 3Text1.ForeColor = CommonDialog1.Color End SubPrivate Sub Command1_Click()Form3.HideForm2.ShowEnd SubPrivate Sub Copy_Click()Dim st As Stringst = Text1.SelTextEnd SubPrivate Sub Cut_Click()Dim st As Stringst = Text1.SelTextText1.SelText = ""End SubPrivate Sub Exit_Click()EndEnd SubPrivate Sub Font_Click()CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects CommonDialog1.Action = 4Text1.FontName = CommonDialog1.FileNameText1.FontSize = CommonDialog1.FontSizeText1.FontBold = CommonDialog1.FontBoldText1.FontItalic = CommonDialog1.FontItalicText1.FontStrikethru = CommonDialog1.FontStrikethru Text1.FontUnderline = CommonDialog1.FontUnderline Text1.ForeColor = CommonDialog1.ColorEnd SubSub New_Click()Text1.Text = ""Me.Caption = FileEnd SubSub Open_Click()CommonDialog1.Action = 1Text1.Text = ""Open CommonDialog1.FileName For Input As #1Do While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text + inputdata + vbCrLfLoopClose #1End SubPrivate Sub Paste_Click()Text1.SelText = stEnd SubPrivate Sub Print_Click()CommonDialog1.Action = 5For i = 1 To CommonDialog1.CopiesPrinter.Print Text1.TextNext iPrinter.EndDocEnd SubPrivate Sub SaveAs_Click()CommonDialog1.FileName = "vb课设用.txt" CommonDialog1.DefaultExt = "txt"CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1 Print #1, Text1.TextEnd SubDim arr As Long, sum As Long, a As IntegerPrivate Sub Command1_Click()a = HScroll1.ValueText1.Text = plus(a)Call isprime(a)End SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub HScroll1_Change()Label2.Caption = HScroll1.ValueEnd SubSub isprime(max As Integer)Dim x As Integer, i As Integer, j As IntegerFor i = 2 To maxx = 0For j = 2 To i - 1If i Mod j = 0 Then x = 1Next jIf x = 0 Then Label2.Caption = Label2.Caption & i & " " Next iEnd SubFunction plus(a As Integer) As LongFor i = 1 To asum = sum + iNext iplus = sumEnd FunctionDim x1 As IntegerDim y1 As IntegerDim x2 As IntegerDim y2 As IntegerDim flag As BooleanPrivate Sub Command1_Click()On Error Resume NextCommonDialog1.CancelError = True CommonDialog1.DialogTitle = "颜色" CommonDialog1.ShowColorIf Err <> 32755 Then Picture1.ForeColor = CommonDialog1.Color End IfEnd SubPrivate Sub Command2_Click()Picture1.ClsEnd SubPrivate Sub Command3_Click()Form5.HideForm6.ShowEnd SubPrivate Sub Option1_Click()Picture1.DrawWidth = 1End SubPrivate Sub Option2_Click()Picture1.DrawWidth = 2End SubPrivate Sub Option3_Click()Picture1.DrawWidth = 4End SubPrivate Sub Option4_Click()Picture1.DrawWidth = 8End SubPrivate Sub Form_Load()Picture1.Scale (0, 0)-(400, 400)flag = FalseEnd SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) flag = Truex1 = Xy1 = YEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If flag = False ThenExit SubEnd IfIf flag = True Thenx2 = Xy2 = YPicture1.Line (x1, y1)-(x2, y2)x1 = x2y1 = y2End IfEnd SubPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) flag = FalseEnd SubDim ctP As Single, ctDu() As Single, ctDuS As LongPrivate Sub Command1_Click()Picture1.AutoRedraw = True: ctP = 3.1415926Timer1.Interval = 20: Timer1.Enabled = Not Timer1.EnabledEnd SubPrivate Sub Command2_Click()Form7.HideForm6.ShowEnd SubPrivate Sub Form_Load()Me.Caption = "旋转的椭圆": Command1.Caption = "转/停"Text1.Text = "9 个": Timer1.Enabled = FalseEnd SubPrivate Sub Text1_Change()ctDuS = Val(Text1.Text)If ctDuS > 200 Then Text1.Text = "200"If ctDuS < 1 Then ctDuS = 1ReDim ctDu(0 To ctDuS)End SubPrivate Sub Timer1_Timer()Dim I As LongPicture1.DrawWidth = 3Picture1.ClsFor I = 0 To ctDuSctDu(I) = ctDu(I) + ctP * 0.01 * I / 9If ctDu(I) > ctP * 2 Then ctDu(I) = ctDu(I) - ctP * 2Show1 ctDu(I), &HFFFFFF / (ctDuS + 1) * I * 0.6NextDim x As Single, y As SingleStatic J As SinglePicture1.DrawWidth = 15x0 = Picture1.ScaleWidth * 0.5: y0 = Picture1.ScaleHeight * 0.5 Picture1.PSet (x0, y0), 255x = 1200: y = 0: J = J - 0.05If J < -ctP * 2 Then J = J + ctP * 2Zhuan J, x, yPicture1.PSet (x0 + x, y0 + y), RGB(0, 0, 255)End SubPrivate Sub Show1(ToJ As Single, Se As Long)Dim I As Single, x As Single, y As Single, x0 As Single, y0 As Single Dim a As Single, b As Single, x1 As Single, y1 As SingleIf Picture1.ScaleWidth < Picture1.ScaleHeight Thena = Picture1.ScaleWidth * 0.45Elsea = Picture1.ScaleHeight * 0.45End Ifb = a * 0.25x0 = Picture1.ScaleWidth * 0.5: y0 = Picture1.ScaleHeight * 0.5x = -a: y = 0: Zhuan ToJ, x, yx1 = a: y1 = 0: Zhuan ToJ, x1, y1Picture1.Line (x0 + x, y0 + y)-(x0 + x1, y0 + y1), Sex = 0: y = -b: Zhuan ToJ, x, yx1 = 0: y1 = b: Zhuan ToJ, x1, y1Picture1.Line (x0 + x, y0 + y)-(x0 + x1, y0 + y1), SeFor I = 0 To ctP * 2 Step 0.1x = a * Sin(I): y = b * Cos(I)Zhuan ToJ, x, yPicture1.Line -(x0 + x, y0 + y), SeNextx = a * Sin(I): y = b * Cos(I)Zhuan ToJ, x, yPicture1.Line -(x0 + x, y0 + y), SeEnd SubPrivate Sub Zhuan(ToJ As Single, x As Single, y As Single) Dim S As Single, J As SingleS = Sqr(x ^ 2 + y ^ 2)If S = 0 Then J = 0 Else J = y / SIf Abs(J) >= 1 ThenIf J > 0 Then J = ctP * 0.5 Else J = -ctP * 0.5ElseJ = Atn(J / Sqr(-J * J + 1))End IfIf x < 0 Then J = -ctP - Jx = S * Cos(J + ToJ): y = S * Sin(J + ToJ) End Sub Private Sub Command1_Click()EndEnd Sub五、运行结果六.心得体会通过本次课程设计,使我对VB的认识更加深入了一层,VB主要由两部分组成,一个是Visual 可视化界面设计,另一个是Basic程序设计。

程序编辑的必备工具文本编辑器推荐

程序编辑的必备工具文本编辑器推荐

程序编辑的必备工具文本编辑器推荐文本编辑器是程序编辑的必备工具之一。

它为程序员提供了一个便捷且高效的环境,用于编辑、调试和管理代码。

在选择适合自己的文本编辑器时,往往需要考虑诸多因素,如界面友好度、功能强大程度、插件扩展性以及跨平台兼容性等。

下面将为大家推荐几款优秀的文本编辑器,帮助程序员提高开发效率。

一、Sublime TextSublime Text是一款强大且流行的文本编辑器,被广大程序员所喜爱。

它提供了简洁的界面和丰富的功能,支持多种编程语言的语法高亮、自动补全和宏命令等。

Sublime Text还支持插件扩展,可以根据个人需求进行定制。

其跨平台特性使得程序员可以在不同操作系统上进行开发,极大地提高了开发效率。

二、Visual Studio CodeVisual Studio Code是由微软推出的一款轻量级代码编辑器,其功能强大、易于使用,并且拥有丰富的插件生态系统。

Visual Studio Code支持多种编程语言,提供了智能代码补全、调试、版本控制等功能,使得程序员能够更加高效地进行开发。

它还具有丰富的主题可供选择,可以个性化编辑器的外观。

三、AtomAtom是GitHub开发的一款开源文本编辑器,被誉为“21世纪的编辑器”。

它具有可定制化的界面、快速的性能和丰富的插件生态系统。

Atom支持多种编程语言,提供了代码片段、文件目录树、项目管理等实用功能。

同时,Atom还具有Git和GitHub的集成,方便程序员进行代码版本管理。

四、Notepad++Notepad++是一款免费的文本编辑器,适用于Windows环境。

尽管它的功能相对较简单,但Notepad++提供了语法高亮、代码折叠、宏命令等功能,足以满足大部分程序员的需求。

在开发小型项目或进行简单的代码编辑时,Notepad++是一个不错的选择。

五、VimVim是一款老牌而强大的文本编辑器,它具有丰富的特性和高度可定制性。

Vim支持多种操作模式和快捷键,让用户能够快速编辑和导航代码。

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。

它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。

本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。

一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面:1. 用户界面设计:一个好的文本编辑器应具备直观友好的用户界面,提供各种操作选项和快捷键,使用户能够轻松地进行文本编辑。

2. 文本处理功能:文本编辑器应具备基本的文本处理功能,如插入和删除文本、查找和替换、拷贝和粘贴等。

这些功能需要通过合适的数据结构和算法来实现。

3. 文本格式化:文本编辑器应支持对文本进行格式化操作,如自动对齐、缩进、换行等。

4. 多标签支持:多标签功能允许用户同时打开多个文本文件,并在它们之间切换。

这要求程序设计中能够有效地管理多个文本文件的打开、关闭和切换。

二、代码示例下面是几个简单的代码示例,用于展示文本编辑器的一些基本功能。

1. 创建文本文件```pythondef create_file(filename):# 创建一个新的文本文件file = open(filename, "w")file.close()```2. 打开文本文件```pythondef open_file(filename):# 打开文本文件并返回文件对象 file = open(filename, "r")return file```3. 插入文本```pythondef insert_text(file, position, text): # 在指定位置插入文本file.seek(position)content = file.read()file.seek(position)file.write(text + content)```4. 删除文本```pythondef delete_text(file, start, end):# 删除指定位置的文本file.seek(start)content = file.read()file.seek(start)file.write(content[:end - start])```5. 查找和替换文本```pythondef find_replace(file, old_text, new_text):# 在文本中查找指定内容并替换file.seek(0)content = file.read()new_content = content.replace(old_text, new_text)file.seek(0)file.write(new_content)```6. 关闭文本文件```pythondef close_file(file):# 关闭文本文件file.close()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。

简单的行编辑器

简单的行编辑器

计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:简单的行编辑器姓名:学号:专业班级:软件工程软件102 系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室<2>用户可从键盘上输入字符,以*结尾表示输入字符结束,界面上会输出用户输入的字符,以及行编辑的功能选择项。

(如输入如下字符beijing huan ying ni *)<3>输入选择1,则依次输出:字母个数:17数字个数:0空格个数:4字符总数:21是否继续使用(Y/N):<4.1>选择Y,则出现行编辑器的功能选择,<4.2>如果第三步结束选择N,则输出**********谢谢使用**********<,再次需要进行行编辑器功能选择:输入选择2;则输出“请输入要统计的某一字符”提示用户输入要查找的字符假如输入i;则输出:i在文章中出现次数为:4;是否继续使用(Y/N)<**********谢谢使用**********<则输出行编辑器的功能选择项目;选择3;输出“请输入要删除子串的起始位置和长度:”提示用户输入,如果输入0 7输出“删除某一子串后:”huan ying ni**********谢谢使用**********<5>其他字符测试;例如用户输入:beijing BEIJING 520*输出字母个数:14数字个数:3空格个数:2字符总数:19统计字符i出现次数为2;删除从8号位器长度为7的字串后输出字符为beijing 520五用户手册1.运行程序,首先出现主界面。

主界面首行显示“欢迎使用文本编辑器”,输出提示信息“请输入要编辑的字符”,然后界面显示用户输入的字符。

然后主界面文本编辑器的功能菜单,功能菜单包括三个选项:选项一:统计字数,选择该项可进字数统计,当用户输入字符结束后,选择功能选项一,主界面回自动统计各字符数,然后输出。

2;选项二:统计出现次数,选择该项可进行对文章中某一字符出现字数的统计,当用户选择功能二时,主界面回输出提示信息,提示用户输入要统计的字符,用户可从键盘任意输入字符,以回车键结束。

文本编辑器实现原理

文本编辑器实现原理

文本编辑器实现原理
文本编辑器的实现原理可以简单概括为以下几步:
1.用户输入文本:用户在编辑器中输入文本,此时文本呈现在编辑器
的屏幕上。

2.文本存储:编译器将用户输入的文本存储在内存或外部存储设备中,以便用户在下次使用编辑器时可以继续编辑。

3.文本修改:当用户对文本进行修改时,编辑器会检测用户的操作
(比如插入、删除、修改等)并相应地更新文本的内容。

4.光标控制:编辑器需要追踪光标的位置并控制其移动,以便用户可
以编辑文本的任何部分。

5.用户界面:用户界面需要显示编辑器的各种工具和选项,比如字体、颜色、格式等。

6.保存和打开:编辑器需要提供保存和打开文本的功能,以便用户可
以在其他时间或设备上打开和编辑他们的文本。

总的来说,文本编辑器实现的原理就是通过对用户输入的文本进行存储、修改和展示等一系列操作,为用户提供方便快捷的文本编辑功能。

数据结构简易文本编辑器

数据结构简易文本编辑器

数据结构简易文本编辑器在当今数字化的时代,文本编辑是我们日常工作和生活中经常进行的操作。

从撰写文章、编辑代码到简单的记事,都离不开文本编辑器的帮助。

而数据结构在文本编辑器的设计和实现中起着至关重要的作用,它决定了编辑器的性能、功能和用户体验。

首先,让我们来了解一下什么是数据结构。

简单来说,数据结构是一种组织和存储数据的方式,以便于对数据进行访问、修改和操作。

常见的数据结构包括数组、链表、栈、队列、树和图等。

在文本编辑器中,通常会用到多种数据结构来实现不同的功能。

对于一个简易的文本编辑器,我们可以使用线性的数据结构来存储文本内容。

一种常见的选择是使用字符数组。

字符数组可以直接存储文本中的字符,通过索引可以快速访问和修改特定位置的字符。

但这种方式存在一些局限性,比如当需要插入或删除大量字符时,可能会导致效率低下,因为需要移动大量后续的字符。

为了提高插入和删除操作的效率,我们可以考虑使用链表。

链表中的每个节点存储一个字符和指向下一个节点的指针。

在进行插入和删除操作时,只需要修改相关节点的指针即可,不需要移动大量的数据。

但链表的随机访问性能较差,如果需要频繁访问特定位置的字符,可能会比较耗时。

除了存储文本内容的数据结构,我们还需要考虑如何实现文本的编辑操作。

比如,当用户输入新的字符时,我们需要将其插入到适当的位置。

如果使用字符数组,我们可以先找到插入位置,然后将后续的字符向后移动,再将新字符插入。

如果使用链表,则可以直接在插入位置创建新的节点,并调整相关指针。

删除操作类似。

对于字符数组,需要将删除位置后的字符向前移动。

对于链表,只需修改相关指针,释放被删除的节点。

为了实现文本的查找和替换功能,我们可以使用一些搜索算法,比如顺序搜索或二分搜索。

如果文本内容是有序的,二分搜索可以大大提高查找的效率。

另外,撤销和重做功能也是文本编辑器中常见的需求。

为了实现这两个功能,我们可以使用栈来保存操作的历史记录。

当执行一个操作时,将其相关信息压入撤销栈。

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

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

分享10个程序员常⽤的的代码⽂本编辑器通常操作系统和软件开发包中都包含⽂本编辑器,可以⽤来编辑配置⽂件,⽂档⽂件和源代码。

下⾯是笔者总结的10个最好的免费代码⽂本编辑器:1.NOTEPAD++NOTEPAD++是⼀款免费⼜优秀的⽂本编辑器,⽀持在MS Windows环境下运⾏的多种编程语⾔。

NOTEPAD++⽀持超过50种编程、脚本和标记语⾔的语法⾼亮显⽰和代码折叠,能让⽤户迅速减⼩或扩⼤代码段以便查阅整个⽂档。

⽤户也可以⼿动设置当前语⾔,覆盖默认语⾔。

该程序还⽀持⾃动完成某些编程语⾔的API⼦集。

2.VIMVIM是⼀个可⾼度⾃由配置的⽂本编辑器。

它是Vi编辑器的改进版,同时也是免费软件。

该应有程序的建⽴是为了处理代码以及其他很多事情,⽽不只是为了写电⼦邮件和打开配置⽂件。

它允许你编辑⽂本并保存简单的⽂本⽂件,但它的主要功能是还是编辑代码。

它⽀持语法⾼亮显⽰和⾏编号,这是写程序必备的两个基本功能。

⽤户也可以改变界⾯颜⾊以便增加代码的可视性。

对于⽂本编辑,VIM这个程序囊括了多种语⾔的拼写检查器,并有建议如何更正拼写错误的能⼒。

甚⾄是当你正在编写代码的时候,它也能派上⽤场,因为该应⽤程序只检查不被识别为代码的⽂本。

当然你也可以快速地从这个错误跳到下⼀个以便更好地校对⽂本。

VIM是程序员和开发⼈员应对各种⽂本编辑的最佳选择。

3.GNU EmacsEmacs是⼀个可移植、可扩展、免费的⽂本编辑器。

Emacs提供了⼀些命令来管理语句和段落,⾼亮的语法使得源代码更易于阅读,以及“键盘宏”的⽅式来执⾏⽤户定义的编辑命令。

Emacs可以在若⼲个操作系统上运⾏,⽆论你使⽤的是哪⼀种机器类型。

这让程序员⾮常受⽤。

如果你使⽤的是通⽤的编程语⾔,Emacs还会为你提供模式以及相应的排版和布局,更加⽅便你编辑代码。

Emacs或许不是最简单的⼯具,但它绝对是最强⼤的编辑器之⼀。

相⽐vim,Emacs的启动时间更长,所需要的内存也更多。

数据结构-课程设计--简易文本编辑器

数据结构-课程设计--简易文本编辑器

《数据结构》课程设计班级: 10计本2班姓名:邓寅森学号: 2010305202指导教师:杨老师完成日期: 2011年12月计算机科学与技术系课程设计评分表课程名称: 数据结构 简易文本编辑器教师签名:日期:一、需求分析1.1 问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。

计算机信息管理为人们的生活、工作提供了方便,提高了效率。

“简易文本编辑器”是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。

1.2 基本任务通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)查询文本中满足要求的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5) 查看所有的文本信息。

二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:2.1 主界面设计为了实现简易文本编辑器的各项功能,设计了一个含有多个菜单项的主控菜单模块以操作系统的各项功能,以方便用户使用系统。

系统进入菜单运行界面如图所示:简易文本编辑器主菜单2.2 数据结构设计系统采用线性表的顺序存储结构表示和存储“简易文本编辑器”中的信息。

实现文本的输入,删除,插入,查找,显示功能。

2.3 系统功能设计运行程序,提示进入菜单,按“回车键”进入主菜单,再可以在主菜单上进行各项操作。

每次进入菜单,选择“1键”新建文本,然后才可以进行其他操作,或者按“0键”选择退出。

三、模块设计3.1 模块设计系统主要包含主程序模块和其它操作模块。

其调用关系如图所示。

模块调用示意图3.2 系统子模块及其功能设计本系统共设计了16个子模块,各程序的函数名及功能说明如下:1、/*由模式串nextval值*/void GetNextval(SqVString T,int nextval[])2、/*模式匹配KMP算法*/int KMPIndex(SqVString S,int pos,int next[],SqVString T)3、/*初始化串*/void InitString(SqVString *S,char *str)4、/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T)5、/*串删除*/int StrDelete(SqVString *S,int pos,int len)6、/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T)7、/*串连接*/int Concat(SqVString *S,SqVString T)8、/*串赋值*/int StrAssign(SqVString *S,char *value)9、void InputString() //新建10、void DeleteString()//删除11、void DeleteSubstring()//删除12、void InsertSubstring()//查找13、void DisplayString()//显示14、void cd()//进入界面15、void ts()//主菜单16、void tc()//退出3.3 系统模块之间的调用关系系统的16个子模块之间的主要调用关系所示:系统函数调用关系图四、详细设计4.1 数据结构设计系统采用线性表的顺序存储结构存储通讯录信息。

sublimetext structure

sublimetext structure

sublimetext structureSublime Text 是一种高级文本编辑器,具有漂亮的用户界面和强大的功能,特别适用于代码编辑和网页开发。

其结构设计得非常灵活和可扩展,使用户可以根据自己的需求进行定制和扩展。

Sublime Text 的结构主要包括以下几个方面:用户界面:Sublime Text 的用户界面非常简洁美观,采用了现代化的设计风格。

它提供了多种主题和颜色方案,用户可以根据自己的喜好进行选择。

同时,Sublime Text 还支持自定义快捷键和菜单,方便用户快速完成常用操作。

核心功能:Sublime Text 的核心功能包括代码高亮、代码折叠、自动补全、多窗口编辑等。

它还支持多种编程语言和文件类型,可以轻松地编辑和查看各种代码文件。

此外,Sublime Text 还提供了拼写检查、书签、项目管理等实用功能,方便用户进行代码管理和维护。

插件系统:Sublime Text 的插件系统是其最为出色的特点之一。

用户可以通过安装插件来扩展编辑器的功能,实现更多的自定义和个性化需求。

插件可以通过 Package Control 进行安装和管理,非常方便。

插件的开发也非常简单,Sublime Text 提供了完整的 Python API,使得开发者可以轻松地编写自己的插件。

跨平台支持:Sublime Text 是一个跨平台的编辑器,支持 Windows、Linux、Mac OS X 等操作系统。

这使得用户可以在不同的平台上使用相同的编辑器和配置,提高了工作效率和便利性。

综上所述,Sublime Text 的结构设计非常灵活和可扩展,用户可以根据自己的需求进行定制和扩展。

其强大的功能和插件系统使得它成为了一款非常优秀的文本编辑器和代码编辑器。

文本编辑器设计

文本编辑器设计

四川师范大学成都学院高级语言程序课程设计文本编辑器设计学生姓名xxx学号x所在学院x专业名称x班级x级x班指导教师x成绩x学院二○一四年十二月课程设计任务书文本编辑器设计内容摘要:当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。

目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行C++程序语言的编译与运行很少,不能更好的适应当前用户的要求。

本设计所完成的文本编辑器功能是针对学习C++程序语言,因此我们利用C++程序设计虚拟机和软件用户以及使用者的应用过程形成一整套完整的编写代码,编译,运行。

本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏,还有链接C++语言虚拟机实现编译与运行。

操作系统为Windows 7。

关键词:文本编辑器C++程序语言编译运行The design of text editorAbstract:Today, the rapid development of computer and network technology, society is rapidly advancing to the information society, we need a more intelligent, more professional software to help us to finish the work, so as to improve work efficiency.At present, many text editors species, to provide the function of many, but can satisfy the compiling and running the user to achieve a variety of functions and the C++ programming language is very few, can better adapt to the requirements of the current user. The completion of the design of the text editor function is for learning C++ programming language, so we use the C++ program design of virtual machines and software users and users of the application process of form a complete set of code, compile, run. The development of the text editor includes interface window menus and toolbars, and link the C + + programming language virtual machine implementation compile and run.The development of the text editor use VC++6.0 as the development tool, and the operating system is Window 7.Keywords:The text editor C + + programming language compile function目录前言 (1)1 课程设计的意义及目的 (1)2 文本编辑器总体结构设计 (2)2.1 文本编辑器功能 (2)2.1.1 文本编辑器的基本功能 (2)2.2 总体结构 (2)3 文本编辑器各功能模块 (4)3.1需求分析 (4)3.2 功能模块 (4)4 软件结构设计 (5)4.1 撤销 (5)4.2 删除 (6)4.3 剪切 (7)4.4 复制 (9)4.5 粘贴 (10)5 操作步骤 (12)5.1打开文本编辑窗口 (12)5.2输入文本 (12)5.3删除文本内容 (12)5.4在编辑里选择撤销 (13)5.5选中文本,编辑里选复制 (13)5.6在编辑里选择粘贴 (14)5.7再次选中文本内容,剪切 (14)5.8再粘贴 (15)结束语 (16)附录 (17)文本编辑器前言在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。

文本三剑客详解

文本三剑客详解

文本三剑客详解在日常工作和学习中,我们经常会遇到需要处理大量文本数据的情况。

为了高效地处理和分析文本,我们需要借助一些强大的工具。

本文将详解三款常用的文本处理工具,它们被称为“文本三剑客”。

一、正则表达式正则表达式是一种强大的文本匹配工具,它可以用来匹配、查找、替换和提取文本中的特定模式。

正则表达式由一系列字符和特殊字符组成,可以通过使用通配符、字符组、量词和边界等元字符来实现不同的匹配模式。

例如,我们可以使用正则表达式来匹配邮箱地址、电话号码、身份证号码等特定格式的文本。

正则表达式还可以用来提取网页中的链接、图片等信息,并进行相应的处理和分析。

二、文本编辑器文本编辑器是用来编辑和处理文本文件的工具。

它可以打开、编辑和保存各种类型的文本文件,如txt、csv、html等。

文本编辑器具有语法高亮、代码折叠、查找替换等功能,使得我们能够更加方便地编辑和查看文本内容。

除了基本的文本编辑功能,一些高级文本编辑器还提供了插件和扩展功能,可以实现代码自动补全、代码格式化、代码片段等功能,提高我们的工作效率。

三、命令行工具命令行工具是通过命令行界面来操作的文本处理工具。

它可以通过输入命令和参数来实现不同的操作,如文件查找、文件比较、文件合并等。

命令行工具通常提供了丰富的命令和选项,可以实现各种复杂的文本处理任务。

例如,我们可以使用命令行工具来统计文本文件中特定字符的出现次数,计算文本文件的行数、字数和词数,以及对文本进行排序、去重、过滤等操作。

正则表达式、文本编辑器和命令行工具是我们处理文本的三剑客。

它们分别具有不同的功能和特点,可以根据实际需求选择合适的工具来处理和分析文本数据。

在实际应用中,我们可以结合使用这三款工具,发挥它们的优势,提高我们的工作效率和数据处理能力。

无论是处理文本数据、提取信息,还是进行文本分析和挖掘,这三款工具都可以帮助我们快速、准确地完成任务。

因此,掌握正则表达式、熟悉文本编辑器的使用方法,以及熟练使用命令行工具是我们提高文本处理能力的关键。

实现一个简单的文本编辑器

实现一个简单的文本编辑器

实现一个简单的文本编辑器一个文本编辑器是一款用于编辑文本文件的应用程序。

它提供了基本的文本编辑功能,例如输入、删除、复制、粘贴和保存文本。

一个简单的文本编辑器可以有以下基本特性:1.文本输入和删除功能:用户可以通过键盘输入文本内容,并且可以通过删除键或退格键删除文本。

2.复制和粘贴功能:用户可以选择文本块,并将其复制到剪贴板中。

然后,可以将剪贴板中的文本粘贴到编辑器中的任何位置。

3.文本格式化:用户可以对文本进行格式化,例如设置字体颜色、字体大小、字体样式(例如加粗、斜体等)等。

4.搜索和替换功能:用户可以搜索编辑器中的文本,找到并替换指定的文本。

5.保存和打开文本文件:用户可以将编辑器中的文本保存成一个文本文件,并且可以打开一个已经存在的文本文件进行编辑。

6.撤销和重做功能:用户可以撤销之前的操作,并重做已经撤销的操作。

7.拼写检查和自动纠错功能:编辑器可以检查用户输入的文本中的拼写错误,并根据语言规则自动纠正错误。

8.自动保存:编辑器可以在一定时间间隔内自动保存用户的文件,以防止意外的程序崩溃或电源故障导致数据丢失。

9.多窗口和标签:用户可以同时打开多个编辑器窗口,并在每个窗口中进行不同的编辑。

10.快捷键:编辑器可以提供一些常用功能的快捷键,以方便用户的操作。

11.缩进和对齐:编辑器可以提供自动缩进和对齐功能,以使文本整齐明了。

12.行号和标记:编辑器可以显示行号,并允许用户通过添加标记(例如断点)来快速导航到特定行。

13.支持多种编程语言:编辑器可以针对不同的编程语言提供特定的功能,例如语法高亮、代码折叠等。

当然,上述的特性只是一个简单文本编辑器的基本要求,实际上,现代化的文本编辑器具有更多更强大的功能和特性。

vi的基本数据类型

vi的基本数据类型

vi的基本数据类型
Vi是一种文本编辑器,它主要用于在Unix和类Unix系统上编
辑文本文件。

在Vi中,基本数据类型主要指的是Vi编辑器中的数
据类型和数据结构。

1. 字符型,Vi编辑器中的基本数据类型之一是字符型。

字符
型数据用于存储单个字符,例如字母、数字或特殊字符。

Vi使用ASCII码来表示字符。

2. 字符串型,字符串型是由多个字符组成的数据类型。

在Vi 中,字符串用于存储文本数据,可以是单词、句子或整个文件内容。

字符串可以进行查找、替换和编辑等操作。

3. 整数型,Vi编辑器中还支持整数型数据类型。

整数型数据
用于存储整数值,可以是正数、负数或零。

整数型数据在Vi中常用
于计数、索引和循环等操作。

4. 布尔型,尽管Vi编辑器本身没有内置的布尔数据类型,但
可以使用整数型数据来模拟布尔值。

通常,0表示假,非零值表示真。

布尔型数据在Vi中常用于条件判断和控制流程。

5. 浮点型,Vi编辑器中没有内置的浮点数据类型。

如果需要
处理浮点数,可以使用外部程序或脚本来实现。

除了这些基本数据类型,Vi还支持其他复杂的数据结构和对象,如数组、列表和字典等。

这些数据结构可以用于存储和操作更复杂
的数据。

需要注意的是,Vi编辑器本身并不是一种编程语言,它主要用
于文本编辑和处理。

因此,Vi的数据类型相对简单,主要用于编辑
文本文件而不是进行复杂的数据操作。

轻量级富文本编辑器wangEditor源码结构介绍

轻量级富文本编辑器wangEditor源码结构介绍

从我发布wangEditor到现在,大概有七八个月了,随着近期增加的插入视频,表情,地图这三个功能,目前为止基本的功能已经大体完善了。

这期间也修改了几个bug,都是各位网友反映的。

至于程序是不是已经很稳定了,我不敢说。

毕竟应用的人不是特别多,目前只有几十个关注wangEditor的人在应用。

他们会偶尔提出一些bug,不过只要告诉我,我会第一时间解决,至少大家对我修改bug增加功能的速度和态度,还是比较认可的。

根据github记载,目前有105个commits,即我已经提交了105次代码更新,这个数量也会继续增加。

大家有bug,有需求可以通过QQ群向我提交。

2. 介绍源码结构wangEditor.js源码目前2200多行,用书写文字书写博客的方式介绍它的结构,还真不是一件简单的事儿。

所以,这里我就长话短说,尽量简单的介绍一下重点,不要搞的太罗嗦,否则大家最后会不耐烦的。

如果让我自己对这个源码的设计和架构做一个评价的话,我会打70分。

它并不是完美的,但是它已经满足了我基本的需求。

比方说,我最近新增的几个功能(插入视频,地图,表情)都是通过修改其中的配置项增加上去的,而没有改动源码中的核心部分。

开放封闭原则——对扩展开放,对修改封闭,我想我已经基本做到了这一点。

最后,我分享wangEditor源码设计的目的,为的是让大家给一些意见。

提出一些疑问,一些建议,或者我目前还没有意识到的一些问题。

总之,我是希望这个软件越做越好。

3. 一个jQuery插件wangEditor是一款jQuery插件,也是基于jquery开发的(不理解jquery插件的同学,请自行补课,本文不讲)。

定义一个jquery插件其实很简单,wangEditor.js源码的最后几十行定义了。

//------------------------------------生成jquery插件------------------------------------$.fn.extend({/** options: {* $initContent: $elem, //配置要初始化内容* menuConfig: [...], //配置要显示的菜单(menuConfig会覆盖掉hideMenuConfig)* onchange: function(){...}, //配置onchange事件,* uploadUrl: 'string' //图片上传的地址* }*/'wangEditor': function(options){if(this[0].nodeName !== 'TEXTAREA'){//只支持textareaalert('wangEditor提示:请使用textarea扩展富文本框。

27款优秀的文本编辑器

27款优秀的文本编辑器

27款优秀的⽂本编辑器经常跟代码打交道的⼈,除了⾃⼰所掌握的代码知识之外,我想他们最需要的⼯具之⼀,应该是⼀款得意的⽂本编辑器了。

好的⽂本编辑器⼀般都⽀持语法⾼亮功能,⽀持多语⾔,⽂件⽐较、插件、代码⽚断助⼿、预览以及FTP管理。

⼀些编辑器甚⾄为⼀个完全的开发环境提供了全⾯的功能和特性。

这⾥是我收集的27款免费的⽐较优秀的⽂本编辑器,适⽤在Windows,Mac或Linux等操作系统环境下⼯作,其中有些还可同时兼容多个操作系统。

Notepad++Notepad++ 是⼀款很有特⾊的⽂本编辑器:1、内置⽀持27 种语法⾼亮度显⽰,⽀持⾃定义语⾔;2、可⾃动检测⽂件类型,根据关键字显⽰节点,节点可⾃由折叠/打开;3、可同时打开两个窗⼝,在分窗⼝中⼜可打开多个⼦窗⼝,允许快捷切换全屏显⽰模式(F11),⽀持⿏标滚轮改变⽂档显⽰⽐例;4、其他特点包括:邻⾏互换位置、宏功能等等。

⼯作环境:WindowsBBEditBBEdit是全球领先的专业HTML和⽂本编辑器,功能包括grep图样匹配,搜索和替换多个⽂件,项⽬定义,功能导航和众多的源代码语⾔的语法着⾊,⽀持代码折叠,FTP和SFTP打开和保存等。

⼯作环境:Mac OS。

Boxer Text EditorEditra是⼀个⽀持多平台的⽂本编辑器,可以⽀持基本语法和⼆⼗种语⾔。

它使⽤⽅便,可以⽤颜⾊标注重点部分,⽀持进⾏内嵌式编辑,也可以进⾏代码编辑。

emacsEmacs不仅仅是⼀个编辑器,他是⼀个整合环境,或可称它为集成开发环境,这些功能如让使⽤者置⾝于全功能的操作系统中。

能够在当前⼤多数操作系统上运⾏,包括类Unix系统、MS-DOS、Microsoft Windows以及OpenVMS等。

Emacs既可以在⽂本终端也可以在图形⽤户界⾯(GUI)环境下运⾏。

FraiseFraise是⼀款免费专门为MacOSX10.6开发的⽂本编辑器,并且⾮常易⽤和强⼤。

最新《C语言程序设计》综合性实验实验报告

最新《C语言程序设计》综合性实验实验报告

最新《C语言程序设计》综合性实验实验报告实验目的:1. 巩固和加深对C语言程序设计基础知识的理解。

2. 掌握C语言的基本编程技巧和程序调试方法。

3. 提高解决实际问题的编程能力,培养综合运用C语言进行程序设计的能力。

实验内容:1. 实现一个基本的学生信息管理系统,包括学生信息的录入、查询、修改和删除功能。

2. 设计并编写一个简单的文本编辑器,支持文本的增删改查操作。

3. 开发一个计算器程序,能够进行基本的四则运算以及复杂运算如指数、开方等。

4. 利用C语言的文件操作功能,实现文件的读写操作,并对文件内容进行处理。

实验环境:- 操作系统:Windows 10- 编程工具:Code::Blocks IDE- 编译器:GCC 9.3.0实验步骤:1. 学生信息管理系统:- 设计学生信息的数据结构,包括学号、姓名、年龄、成绩等。

- 使用数组或链表存储学生信息。

- 实现用户界面,提供简单的文本菜单供用户选择操作。

- 对学生信息进行增删改查的函数实现。

- 测试程序,确保所有功能正常运行。

2. 简单文本编辑器:- 设计文本编辑器的基本功能,如打开文件、保存文件、文本输入输出等。

- 实现文本的插入、删除、查找和替换功能。

- 提供友好的用户界面,支持命令行操作。

- 对程序进行单元测试,确保文本编辑的准确性和稳定性。

3. 计算器程序:- 设计计算器的用户界面,支持用户输入运算表达式。

- 实现基本的四则运算功能。

- 扩展支持指数、开方等复杂运算。

- 对计算器进行测试,验证计算结果的准确性。

4. 文件处理程序:- 实现文件的打开、读取、写入和关闭功能。

- 设计文件内容处理功能,如统计文件中的单词数量、查找特定字符串等。

- 编写用户友好的命令行界面,方便用户操作。

- 对文件处理程序进行全面测试,确保文件操作的安全性和可靠性。

实验结果:通过本次综合性实验,成功实现了学生信息管理系统、文本编辑器、计算器和文件处理程序。

所有程序均通过了功能测试和性能测试,满足了实验的基本要求。

简单文本编辑器-设计报告

简单文本编辑器-设计报告

简易文本编辑器●需求分析该简易文本编辑器具有图形菜单界面,包括打开,查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除,显示文本信息,保存文本信息等等功能并可正确存盘、取盘,正确显示总行数。

●概要设计为实现数据的有序存储,该编辑器用字符数组来存储输入的信息。

数组是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。

其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。

在编辑器的主界面中应有如下提示信息(包括功能的完成的基本思想):1) 清空以前的文本信息:将用数组存的数据内容全部置为0;2) 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;3) 编辑信息:通过对数组的直接输入操作得到字符数组,这要求数组有绝对大的空间,而且每一次的输入完毕必须有相应的数组下表地址的记录,应此建立一个全局变量ntext记录;4) 查找信息:通过循环在数组中找到所需要的信息;5) 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;6) 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;7) 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;8) 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;9) 退出编辑器:通过确认是否保存安全退出。

10)程序中主要的函数为:子串查找在朱串的位置,程序如下:int strindex(char text[],char t[],int i2,int l) //查找要操作的数据的位置(模式匹配){int i1=l,j=0;while (i1<ntext&&j<i2){if (text[i1]==t[j]) //继续匹配下一个字符{j++;i1++;//主串和子串依次匹配下一个字符}else //主串、子串指针回溯重新开始下一次匹配{i1=i1-j+1; //主串从下一个位置开始匹配j=0;//子串从头开始匹配}}if (j>=i2){return(i1-i2);} //返回匹配的第一个字符的下标elsereturn(-1); //模式匹配不成功}详细设计1.包括的头文件#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#define MAX 10000#define _CRT_SECURE_NO_DEPRECATE //在vs中取消warning的警告2.相关函数原型void menu();void shuru(char text[]);void bc(char text[]);void dakai(char text[]);void dayin(char text[]);void chazhao(char text[],int l);void tihan(char text[],int l);int strindex(char text[],char t[],int i2,int l);void shanchu(char p[],int l);void cs(char text[]);void charu(char text[],int l);void tuichu(int status);char text[MAX]=""; //文本编辑域char name[20]=""; //文件保存的位置int status=0; //显示是否保存过的状态int ntext; //文本编辑的位置3./*打开文件模块*/void dakai(char text[]){system("cls");FILE *fp;char pd,ch;char name[30];int i=0;printf("输入A:确定打开文件(未保存的数据将会丢失) M:返回主菜单");fflush(stdin);pd=getchar();if (pd=='A'||pd=='a'){printf("请输入要打开文件名字(例如c:\\a.txt)");scanf("%s",name);while ((fp=fopen(name,"r"))==NULL){printf("\n打开文件失败,请重新输入要打开的文件名:");scanf("%s",name);}cs(text);while(!feof(fp)){ch=fgetc(fp);text[i]=ch;i++;}text[i]='\0';ntext=i;fclose(fp);printf("\n文件读取成功\n文件内容为\n");dayin(text);}if (pd=='M'||pd=='m')menu();}4./*保存模块*/void bc(char text[]){system("cls");FILE *fp;char pd;char tmp;int i;printf("\n输入【A】保存;任意键返回主菜单不保存\n");fflush(stdin);pd=getchar();if (!(pd=='A'||pd=='a')){menu();}else{if(name[20]==NULL){printf("\n请输入保存文件名(例如: c:\\a.txt):");scanf("%s",name);}while ((fp=fopen(name,"w+"))==NULL){printf("文件不存在,请重新输入文件名:");scanf("%s",name);}printf("\nA:确定;B:取消:");while(scanf("%c",&tmp)!=EOF){if (tmp=='A' || tmp=='a'){for(i=0;i<ntext;i++)fprintf(fp,"%c",text[i]);fclose(fp);status=1;printf("\n文件保存成功\n");break;}if (tmp=='B' || tmp=='b'){break;}}}}5./*初始化模块*/void cs(char text[]){int i;for (i=0;i<ntext;i++){text[i]='\0';}ntext=0;status=0;}int strindex(char text[],char t[],int i2,int l) //查找要操作的数据的位置(模式匹配) {int i1=l,j=0;while (i1<ntext&&j<i2){if (text[i1]==t[j]) //继续匹配下一个字符{j++;i1++;//主串和子串依次匹配下一个字符}else //主串、子串指针回溯重新开始下一次匹配{i1=i1-j+1; //主串从下一个位置开始匹配j=0;//子串从头开始匹配}}if (j>=i2){return(i1-i2);} //返回匹配的第一个字符的下标elsereturn(-1); //模式匹配不成功}6./*菜单显示模块*/void menu(){system("cls");time_t timep;time (&timep);printf("%s",ctime(&timep));printf("\n\n\n\n\n\n\n\n\n\t\t\tWelcom to use our TXT edition system!\n");printf("\n\n\t\t\t 欢迎您使用文本编辑器软件!\n");printf("\n\n\n\n\n\n\n\n\npress Enter to continue...\n");getchar();loop:system("cls");printf("\n\n\n\n\t\t******************简易文本编辑器*****************\n\n");printf("\t\t\t\t----0.清空内容--\n");printf("\t\t\t\t----1.打开文件--\n");if (ntext==0){printf("\t\t\t\t----2.输入内容--\n");}else {printf("\t\t\t\t----2.继续输入--\n");}printf("\t\t\t\t----3.查找------\n");printf("\t\t\t\t----4.插入------\n");printf("\t\t\t\t----5.删除------\n");printf("\t\t\t\t----6.替换------\n");printf("\t\t\t\t----7.显示内容--\n");printf("\t\t\t\t----8.保存------\n");printf("\t\t\t\t----9.退出------\n");printf("\n\t\t*********************选项************************\n");printf("\n\t\t\t\t输入选项0-9:");char n;fflush(stdin);n=getchar();if(n>='0'&&n<='9'){switch (n){case '0': cs(text);break;case '1': dakai(text);break;case '2': shuru(text);break;case '3': chazhao(text,0);break;case '4': charu(text,1);break;case '5': shanchu(text,0);break;case '6': tihan(text,0);break;case '7': dayin(text);break;case '8': bc(text);break;case '9': tuichu(status);default : break;}}else{printf("\n输入有误,请重新输入:");fflush(stdin);n=getchar();}system("pause");goto loop;}7./*查找*/void chazhao(char text[],int l){system("cls");int i,t,a=-1;char pattern[20],bd,pd;printf("原文为:\n");dayin(text);printf("请输入您要查找的内容");scanf("%s",pattern);printf("您查找的内容是:%s\n",pattern);t=strlen(pattern);loop:a=strindex(text,pattern,t,l);if (a!=-1){l=a+t;}int hs=1,ls=0;for (i=0;i<=a;i++){ls++;if (text[i]=='\n'){hs++;ls=0;}}if (a==-1){printf("查找到结尾没有找到\n输入【R】将重头查找;任意键返回主菜单");l=0;fflush(stdin);pd=getchar();}else{printf("已经找到在第%d行第%d列,输入【R】继续查找下一处;任意键返回主菜单",hs,ls);fflush(stdin);bd=getchar();if (bd=='R'||bd=='r')goto loop;}if (pd=='R'||pd=='r'){l=0;chazhao(text,l);}}8./*显示模块*/void dayin(char text[]){system("cls");printf("现在文本的内容为:\n");printf("%s\n",text);int hs=1,i;for (i=0;i<ntext;i++){if (text[i]=='\n'){hs++;}}printf("\n文本共有%d行\n",hs);}9./*输入模块*/void shuru(char text[]){system("cls");printf("请输入内容(输入@结束输入并返回主菜单):\n");printf("%s",text);char c;int i=ntext,j=ntext;fflush(stdin);while ((c=getchar())!='@'){text[i]=c;i++;ntext=i;continue;}int cout=0,zf=0,h=1,hs=1,zfs=0;for(;cout<ntext;cout++){zf++;if(text[cout]=='\n'){h++;zf--;}if(text[cout]==' ')zf--;}for(cout=j;cout<ntext;cout++){zfs++;if(text[cout]=='\n'){hs++;zfs--;}if(text[cout]==' ')zfs--;}printf("统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d行\n",zf,h,zfs,hs);}10./*删除*/void shanchu(char p[],int l){int i,a=-1,t2=0;char x[20],px,pd,pdx,c;system("cls");printf("%s",p);printf("\n输入【A】执行查找删除内容;任意键返回主菜单:");fflush(stdin);px=getchar();if (px=='a'||px=='A'){printf("\n输入您要删除的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@'){if (c=='@'){break;}else{x[t2]=c;t2++;continue;}}loop:a=strindex(p,x,t2,l);int hs=1,ls=0;for (i=0;i<=a;i++){ls++;if (p[i]=='\n'){hs++; ls=0;}}if (a==-1){printf("已查找结束,您要删除的内容不存在\n输入【R】重新输入要删除的内容;其他键将返回主菜单:");l=0;fflush(stdin);pdx=getchar();}else{printf("你要删除的内容在第%d行第%d列\n 输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:",hs,ls);fflush(stdin);pd=getchar();l=t2+a;if (pd=='a'||pd=='A'){for(i=a;i<ntext;i++){p[i]=p[i+t2];}ntext=ntext-t2;printf("删除成功,删除后的内容为:\n%s\n",text);}else if (pd=='b'||pd=='B')goto loop;}if(pdx=='r'||pdx=='R')shanchu(text,l);}}11./*插入*/void charu(char text[],int l) //向文本中插入内容{system("cls");int i=0,t=0,t2=0,a=-1,b;char cr[20]="",pd,x[500],c,d;printf("\n当前文本信息为:\n");printf("%s",text);printf("\n输入您要在哪个内容前插入,以@结束:");fflush(stdin);while ((c=getchar())!='@') //用一个数组接收要插入在哪个内容之前{if (c=='@'){break;}else{cr[t]=c;t++;continue;}}loop:a=strindex(text,cr,t,l); //查找并返回要插入的位置点int hs=1,ls=0;for (b=0;b<a;b++){ls++;if (text[b]=='\n'){hs++;ls=0;}}if (a==-1){printf("\n查找到结尾没有找到插入点,输入【R】查找其他;按其他键返回菜单:\n");l=0;fflush(stdin);d=getchar();fflush(stdin);}else{printf("\n您要插入的位置是第%d行,第%d列之前\n【A】.不是此位置向后继续找插入点\n【B】.在此位置插入\n按其他键返回菜单\n请选择:",hs,ls+1);fflush(stdin);pd=getchar();if (pd=='a'||pd=='A'){l=a+t;goto loop;}else if (pd=='b'||pd=='B'){printf("\n\n输入您要插入的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@'){if (c=='@'){break;}else{x[t2]=c;t2++;continue;}}for (i=ntext;i>=a;i--){text[i+t2]=text[i];}for (i=0;i<t2;i++){text[i+a]=x[i];}ntext=ntext+t2;printf("\n当前文本信息为:\n");for (i=0;i<=ntext-1;i++)printf("%c",text[i]);printf("\n文本插入成功\n");fflush(stdin);getchar();}}if (d=='r'||d=='R'){l=0;charu(text,l);}status=0;}12./*替换*/void tihan(char p[],int l) //内容替换{int t=0,t1=0,i,a,b;char c,th[20],d,d1,bth[20];int i2;system("cls");printf("\n当前文本信息为:\n");for (i2=0;i2<=ntext-1;i2++)printf("%c",p[i2]);printf("\n输入要被替换的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@') //t指替换前内容的长度{if (c=='@'){break;}else{bth[t]=c;t++;continue;}}loop:a=strindex(p,bth,t,l); //查找要被替换的内容的位置int hs=1,ls=0;for (b=0;b<a;b++){ls++;if (p[b]=='\n'){hs++;ls=0;}}if (a==-1){printf("\n查找到结尾没有找到要被替换的内容\n输入【R】查找其他内容,按其他键返回主菜单键\n");l=0;d=getchar();fflush(stdin);}else{printf("\n\n已经找到要查找的数据在第%d行第%d列\n输入【A】继续向后查找相同内容\n输入其他键将进行替换操作\n请选择:",hs,ls+1);fflush(stdin);l=t+a;char pd;pd=getchar();if (pd!='a'&&pd!='A'){printf("\n是否要替换该内容?\nA:替换给内容;其他键返回主菜单\n请选择:");fflush(stdin);d1=getchar();if (d1=='a'||d1=='A'){printf("\n输入要替换的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@') //t1指替换后的内容长度{if (c=='@'){break;}else{th[t1]=c;t1++;continue;}}if (t==t1) //将要被替换的内容和替换后的内容进行长度比较{for (i=0;i<t1;i++)p[i+a]=th[i];}else{if (t>t1){for (i=0;i<t1;i++){p[i+a]=th[i];}for (i=a+t1;i<ntext;i++){p[i]=p[i+t-t1];}ntext=ntext+t1-t;}else{for (i=ntext;i>=a;i--){p[i+t1-t]=p[i];}for (i=0;i<t1;i++){p[i+a]=th[i];}ntext=ntext+t1-t;}}printf("替换成功");printf("\n当前文本信息为:\n");for (i2=0;i2<=ntext-1;i2++)printf("%c",p[i2]);getchar();status=0;}}elsegoto loop;}if(d=='r'||d=='R')tihan(text,l);}13./*退出*/void tuichu(int status){char pd;if(status)exit(0);elseprintf("还未保存文件,确定退出?(Q.直接退出;Y.保存后退出");fflush(stdin);pd=getchar();if(!(pd=='Q'||pd=='q'))bc(text);exit(0);}int main(){menu();return (0);}调试分析1.界面设计2.界面设计2主界面的设计如图,比较单调。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:【2】.简易文本编辑器要求:1) 具有图形菜单界面;2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除3) 可正确存盘、取盘;4) 正确显示总行数。

1需求分析一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。

2概要设计为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。

顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。

其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。

在编辑器的主界面中应有如下提示信息:⑴清空以前的文本信息:将用数组存的数据内容全部置为0;⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;⑻退出编辑器:显示感谢使用该软件并退出。

3 详细设计void menu();void shuru(char text[]);void bc(char text[]);void dakai(char text[]);void dayin(char text[]);void chazhao(char text[],int l);void tihan(char text[],int l);int strindex(char text[],char t[],int i2,int l);void shanchu(char p[],int l);void cs(char text[]);void charu(char text[],int l);void tuichu(int status);char text[MAX]=""; //文本编辑域char name[20]=""; //文件保存的位置int status=0; //显示是否保存过的状态int ntext; //文本编辑的位置4用户使用说明⑴清空以前的文本信息:将用数组存的数据内容全部置为0;⑵显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;⑶编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;⑷替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;⑸插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;⑹移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;⑺删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;⑻退出编辑器:显示感谢使用该软件并退出。

5调试分析 /测试结果文本编辑器主界面主界面功能,如图2—2所示。

图2—2 文本编辑器主界面系统功能⑴输入文本信息功能,如图2—3所示。

图2—3 输入界面⑵查找文本信息,如图2—4所示。

图2—4查到功能界面⑶显示文本信息,如图2—5。

图2—5{4}删除操作,如图2--6图2—6 (删除123)功能{5}插入操作如图2—7所示。

图2—7 (在789前插入123)界面{6}替换文本内容,如图2—8所示。

图2—8 (替换456为abc)的内容6心得体会程序的运行结果与理论推导结果完全吻合,即该算法与程序设计满足课程设计要求。

该程序的主要优点是简单易懂,不存在理解上的障碍,也很自然地能想到这种解法。

通过数据结构的课程设计使我们对所学知识有了更好的理解,也增强了大家的动手能力。

同时也发现了自己的很多不足之处,对知识的应用能力很是欠缺,应用软件的能力及编程水平与课程要求更是存在很大的差距。

7程序#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#define MAX 10000#define _CRT_SECURE_NO_DEPRECATE //在vs中取消warning的警告void menu();void shuru(char text[]);void bc(char text[]);void dakai(char text[]);void dayin(char text[]);void chazhao(char text[],int l);void tihan(char text[],int l);int strindex(char text[],char t[],int i2,int l); void shanchu(char p[],int l);void cs(char text[]);void charu(char text[],int l);void tuichu(int status);char text[MAX]=""; //文本编辑域char name[20]=""; //文件保存的位置int status=0; //显示是否保存过的状态int ntext; //文本编辑的位置void dakai(char text[]){system("cls");FILE *fp;char pd,ch;char name[30];int i=0;printf("输入A:确定打开文件(未保存的数据将会丢失) M:返回主菜单"); fflush(stdin);pd=getchar();if (pd=='A'||pd=='a'){printf("请输入要打开文件名字(例如c:\\a.txt)");scanf("%s",name);while ((fp=fopen(name,"r"))==NULL){printf("\n打开文件失败,请重新输入要打开的文件名:");scanf("%s",name);}cs(text);while(!feof(fp)){ch=fgetc(fp);text[i]=ch;i++;}text[i]='\0';ntext=i;fclose(fp);printf("\n文件读取成功\n文件内容为\n");dayin(text);}if (pd=='M'||pd=='m')menu();}void bc(char text[]){system("cls");FILE *fp;char pd;char tmp;int i;printf("\n输入【A】保存;任意键返回主菜单不保存\n");fflush(stdin);pd=getchar();if (!(pd=='A'||pd=='a')){menu();}else{if(name[20]==NULL){printf("\n请输入保存文件名(例如: c:\\a.txt):");scanf("%s",name);}while ((fp=fopen(name,"w+"))==NULL){printf("文件不存在,请重新输入文件名:");scanf("%s",name);}printf("\nA:确定;B:取消:");while(scanf("%c",&tmp)!=EOF){if (tmp=='A' || tmp=='a'){for(i=0;i<ntext;i++)fprintf(fp,"%c",text[i]);fclose(fp);status=1;printf("\n文件保存成功\n");break;}if (tmp=='B' || tmp=='b'){break;}}}}void cs(char text[]){int i;for (i=0;i<ntext;i++){text[i]='\0';}ntext=0;status=0;}int strindex(char text[],char t[],int i2,int l) //查找要操作的数据的位置(模式匹配){int i1=l,j=0;while (i1<ntext&&j<i2){if (text[i1]==t[j]) //继续匹配下一个字符{j++;i1++;//主串和子串依次匹配下一个字符}else //主串、子串指针回溯重新开始下一次匹配{i1=i1-j+1; //主串从下一个位置开始匹配j=0;//子串从头开始匹配}}if (j>=i2){return(i1-i2);} //返回匹配的第一个字符的下标elsereturn(-1); //模式匹配不成功}void menu(){system("cls");time_t timep;time (&timep);printf("%s",ctime(&timep));printf("\n\n\n\n\n\n\n\n\n\t\t\tWelcom to use our TXT edition system!\n");printf("\n\n\t\t\t 欢迎您使用文本编辑器软件!\n");printf("\n\n\n\n\n\n\n\n\npress Enter to continue...\n");getchar();loop:system("cls");printf("\n\n\n\n\t\t******************简易文本编辑器*****************\n\n");printf("\t\t\t\t----0.清空内容--\n");printf("\t\t\t\t----1.打开文件--\n");if (ntext==0){printf("\t\t\t\t----2.输入内容--\n");}else {printf("\t\t\t\t----2.继续输入--\n");}printf("\t\t\t\t----3.查找------\n");printf("\t\t\t\t----4.插入------\n");printf("\t\t\t\t----5.删除------\n");printf("\t\t\t\t----6.替换------\n");printf("\t\t\t\t----7.显示内容--\n");printf("\t\t\t\t----8.保存------\n");printf("\t\t\t\t----9.退出------\n");printf("\n\t\t*********************选项************************\n");printf("\n\t\t\t\t输入选项0-9:");char n;fflush(stdin);n=getchar();if(n>='0'&&n<='9'){switch (n){case '0': cs(text);break;case '1': dakai(text);break;case '2': shuru(text);break;case '3': chazhao(text,0);break;case '4': charu(text,1);break;case '5': shanchu(text,0);break;case '6': tihan(text,0);break;case '7': dayin(text);break;case '8': bc(text);break;case '9': tuichu(status);default : break;}}else{printf("\n输入有误,请重新输入:");fflush(stdin);n=getchar();}system("pause");goto loop;}void chazhao(char text[],int l){system("cls");int i,t,a=-1;char pattern[20],bd,pd;printf("原文为:\n");dayin(text);printf("请输入您要查找的内容");scanf("%s",pattern);printf("您查找的内容是:%s\n",pattern);t=strlen(pattern);loop:a=strindex(text,pattern,t,l);if (a!=-1){l=a+t;}int hs=1,ls=0;for (i=0;i<=a;i++){ls++;if (text[i]=='\n'){hs++;ls=0;}}if (a==-1){printf("查找到结尾没有找到\n输入【R】将重头查找;任意键返回主菜单");l=0;fflush(stdin);pd=getchar();}else{printf("已经找到在第%d行第%d列,输入【R】继续查找下一处;任意键返回主菜单",hs,ls);fflush(stdin);bd=getchar();if (bd=='R'||bd=='r')goto loop;}if (pd=='R'||pd=='r'){l=0;chazhao(text,l);}}void dayin(char text[]){system("cls");printf("现在文本的内容为:\n");printf("%s\n",text);int hs=1,i;for (i=0;i<ntext;i++){if (text[i]=='\n'){hs++;}}printf("\n文本共有%d行\n",hs);}void shuru(char text[]){system("cls");printf("请输入内容(输入@结束输入并返回主菜单):\n");printf("%s",text);char c;int i=ntext,j=ntext;fflush(stdin);while ((c=getchar())!='@'){text[i]=c;i++;ntext=i;continue;}int cout=0,zf=0,h=1,hs=1,zfs=0;for(;cout<ntext;cout++){zf++;if(text[cout]=='\n'){h++;zf--;}if(text[cout]==' ')zf--;}for(cout=j;cout<ntext;cout++){zfs++;if(text[cout]=='\n'){hs++;zfs--;}if(text[cout]==' ')zfs--;}printf("统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d 行\n",zf,h,zfs,hs);}void shanchu(char p[],int l){int i,a=-1,t2=0;char x[20],px,pd,pdx,c;system("cls");printf("%s",p);printf("\n输入【A】执行查找删除内容;任意键返回主菜单:");fflush(stdin);px=getchar();if (px=='a'||px=='A'){printf("\n输入您要删除的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@'){if (c=='@'){break;}else{x[t2]=c;t2++;continue;}}loop:a=strindex(p,x,t2,l);int hs=1,ls=0;for (i=0;i<=a;i++){ls++;if (p[i]=='\n'){hs++; ls=0;}}if (a==-1){printf("已查找结束,您要删除的内容不存在\n输入【R】重新输入要删除的内容;其他键将返回主菜单:");l=0;fflush(stdin);pdx=getchar();}else{printf("你要删除的内容在第%d行第%d列\n 输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:",hs,ls);fflush(stdin);pd=getchar();l=t2+a;if (pd=='a'||pd=='A'){for(i=a;i<ntext;i++){p[i]=p[i+t2];}ntext=ntext-t2;printf("删除成功,删除后的内容为:\n%s\n",text);}else if (pd=='b'||pd=='B')goto loop;}if(pdx=='r'||pdx=='R')shanchu(text,l);}}void charu(char text[],int l) //向文本中插入内容{system("cls");int i=0,t=0,t2=0,a=-1,b;char cr[20]="",pd,x[500],c,d;printf("\n当前文本信息为:\n");printf("%s",text);printf("\n输入您要在哪个内容前插入,以@结束:");fflush(stdin);while ((c=getchar())!='@') //用一个数组接收要插入在哪个内容之前{if (c=='@'){break;}else{cr[t]=c;t++;continue;}}loop:a=strindex(text,cr,t,l); //查找并返回要插入的位置点int hs=1,ls=0;for (b=0;b<a;b++){ls++;if (text[b]=='\n'){hs++;ls=0;}}if (a==-1){printf("\n查找到结尾没有找到插入点,输入【R】查找其他;按其他键返回菜单:\n");l=0;fflush(stdin);d=getchar();fflush(stdin);}else{printf("\n您要插入的位置是第%d行,第%d列之前\n【A】.不是此位置向后继续找插入点\n【B】.在此位置插入\n按其他键返回菜单\n请选择:",hs,ls+1);fflush(stdin);pd=getchar();if (pd=='a'||pd=='A'){l=a+t;goto loop;}else if (pd=='b'||pd=='B'){printf("\n\n输入您要插入的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@'){if (c=='@'){break;}else{x[t2]=c;t2++;continue;}}for (i=ntext;i>=a;i--){text[i+t2]=text[i];}for (i=0;i<t2;i++){text[i+a]=x[i];}ntext=ntext+t2;printf("\n当前文本信息为:\n"); for (i=0;i<=ntext-1;i++)printf("%c",text[i]);printf("\n文本插入成功\n");fflush(stdin);getchar();}}if (d=='r'||d=='R'){l=0;charu(text,l);}status=0;}void tihan(char p[],int l) //内容替换{int t=0,t1=0,i,a,b;char c,th[20],d,d1,bth[20];int i2;system("cls");printf("\n当前文本信息为:\n");for (i2=0;i2<=ntext-1;i2++)printf("%c",p[i2]);printf("\n输入要被替换的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@') //t指替换前内容的长度{if (c=='@'){break;}else{bth[t]=c;t++;continue;}}loop:a=strindex(p,bth,t,l); //查找要被替换的内容的位置int hs=1,ls=0;for (b=0;b<a;b++){ls++;if (p[b]=='\n'){hs++;ls=0;}}if (a==-1){printf("\n查找到结尾没有找到要被替换的内容\n输入【R】查找其他内容,按其他键返回主菜单键\n");l=0;d=getchar();fflush(stdin);}else{printf("\n\n已经找到要查找的数据在第%d行第%d列\n输入【A】继续向后查找相同内容\n输入其他键将进行替换操作\n请选择:",hs,ls+1);fflush(stdin);l=t+a;char pd;pd=getchar();if (pd!='a'&&pd!='A'){printf("\n是否要替换该内容?\nA:替换给内容;其他键返回主菜单\n 请选择:");fflush(stdin);d1=getchar();if (d1=='a'||d1=='A'){printf("\n输入要替换的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@') //t1指替换后的内容长度{if (c=='@'){break;}else{th[t1]=c;t1++;continue;}}if (t==t1) //将要被替换的内容和替换后的内容进行长度比较{for (i=0;i<t1;i++)p[i+a]=th[i];}else{if (t>t1){for (i=0;i<t1;i++){p[i+a]=th[i];}for (i=a+t1;i<ntext;i++){p[i]=p[i+t-t1];}ntext=ntext+t1-t;}else{for (i=ntext;i>=a;i--){p[i+t1-t]=p[i];}for (i=0;i<t1;i++){p[i+a]=th[i];}ntext=ntext+t1-t;}}printf("替换成功");printf("\n当前文本信息为:\n");for (i2=0;i2<=ntext-1;i2++)printf("%c",p[i2]);getchar();status=0;}}elsegoto loop;}if(d=='r'||d=='R')tihan(text,l);}void tuichu(int status){char pd;if(status)exit(0);elseprintf("还未保存文件,确定退出?(Q.直接退出;Y.保存后退出");fflush(stdin);pd=getchar();if(!(pd=='Q'||pd=='q'))bc(text);exit(0);}int main(){menu();return (0); }。

相关文档
最新文档