当前位置:文档之家› 文本编辑器 C语言程序

文本编辑器 C语言程序

文本编辑器  C语言程序
文本编辑器  C语言程序

文本编辑器

C语言课程设计报告

目录

1.设计目的及要求

1.1设计目的

1.2设计要求

1.3题目解析

2.总体设计

3.详细设计

3.1流程图

3.2程序解析

4.调试分析

5.设计总结

6.心得体会

7.答辩记录

8.教师意见

1.设计目的及要求

1·1设计目的

编一个程序对一个指定的文本文件进行处理,要具有统计功能,编辑功能以及查找功能等。

1·2设计要求

A)读取一个指定文本文件,每行以回车结束,显示在屏幕上

B)统计功能:统计字符数,单词数,行数,并输出

C)编辑功能

1)将所有小写字母改成大写字母,将新的文本输出;

2)将所有大写字母改成小写字母,将新的文本输出;

3)输入被替换的字符串,及替换的内容,将新的文本输出;

D)查找功能

1)输入一个字符,在文本中查找是否存在该字符,若存在,统计

其个数,并将信息输出;

2)输入一个单词,在文本中查找是否存在该字符,若存在,统计

其个数,并将信息输出;

1.3题目解析

课程的第一要求就是读取一个指定的文本文件,而且之后还有对字符串,字符数组的运用,所以要使用文本函数将文本中的字符输入到字符数组中。完成第一步之后就是对字符串的处理了。

2·总体设计

因为是对指定的文本文件进行处理,所以需要首先运用fscanf函数将文本文件中的字符读入到指定的数组中,然后才能进行处理。

对于字符串的处理,首先在头文件中使用#include,因为下文要使用有关字符串的函数。具体的要用到strlen函数。

3·详细设计

3·1流程图

3.2程序解析

#include #include void main() {

char file[30]="\0",m[15]="\0";//file 是文件地址,m 是下面case 1里用的

int c,n,s;//c 用于switch ,n ,s 是case 1里用的 printf("请输入源文件地址:"); scanf("%s",file);

char a[2000]="\0",b[2000]="\0";

FILE *fp=fopen(file,"r");//这是打开文件并把文件地址指针给fp if(!fp)//若是没能打开则运行 { printf("源文件不存在或地址输入错误!\n");

} int i=0;

fscanf(fp,"%c",&a[i]);//读取第一个字符给a[0] while(a[i++]) //读取字符并输出 {

fscanf(fp,"%c",&a[i]);

注释:

fscanf 函数用于从磁盘文件中读入数据,送到程序中进行处理,其一般表达形式为:

fscanf (文件指针,格式字符串,输入参数列表)

与fprintf 函数类似,fscanf 函数调用时同样返回int 型数值,其返回值有两种: 函数调用成功时:返回时间输入的字符数 函数调用失败时:返回EOF

printf("%c",a[i-1]);

}

i--;

int j=0,k=0;

for(;j

if(a[j]=='\40'||a[j]=='\n')

k++;

j=i-k;//i是总共字符的个数, k是空格与换行的个数

printf("\n此文本中有%d个字符,",j);

for(j=0,k=0;j

if((a[j]!='\40'&&a[j]!='\n')&&(a[j+1]=='\40'||a[j+1]=='\n'))

k++;

if(a[i-1]!='\40'&&a[i-1]!='\n') k++;//a[i-1]是最后一个字符得

判断一下最后一个是不是空格或换行若不是k就得再加一

printf("有%d个单词,",k);

for(j=0,k=1;j

if(a[j]=='\n')

k++;

do

{

printf("\n功能:统计单词或字符个数请输入1,小写变大写请输

入2,大写变小写请输入3,替换字符串请输入4,退出请输入5\n");

scanf("%d",&c);

FILE *fp;

int s1,s2,x,y,z;

char str1[20]="\0",str2[20]="\0";

switch(c)

{

case 1:

printf("请输入你要统计的单词或字符:");

scanf("%s",m);

s=strlen(m);

k=0;

for(j=0;j

{

n=0;

while(m[n]==a[j]&&n

if(n==s) k++,j--;

注释:

当m与a的字符数组,不仅对应的字符完全一样,而且长度还要一样,这样才可以统计出一个字符,k累加一。

}

printf("%s共有%d个\n",m,k);

break;

case 2:

printf("请输入转变后文件的保存路径:");

scanf("%s",file);

fp=fopen(file,"w");

注释:

fopen是c语言中文件打开的函数,该函数的声明在头文件stdio.h中,这里“w”是write的缩写,设置对文件“写”的权限。

printf("转变后的文本为:\0");

for(j=0;j

{

if('a'<=a[j]&&a[j]<='z')

b[j]=a[j]-32;

else b[j]=a[j];

fprintf(fp,"%c",b[j]);

printf("%c",b[j]);

}

printf("文件保存已完成!\0");

fclose(fp);

break;

case 3:

printf("请输入转变后文件的保存路径:");

scanf("%s",file);

fp=fopen(file,"w");

printf("转变后的文本为:\0");

for(j=0;j

{

if('A'<=a[j]&&a[j]<='Z')

b[j]=a[j]+32;

else b[j]=a[j];

fprintf(fp,"%c",b[j]);

printf("%c",b[j]);

}

printf("\0文件保存已完成!\0");

fclose(fp);

break;

case 4:

printf("请输入需要被替换的字符串:");

scanf("%s",str1);

printf("\n请输入用来替换的字符串:");

scanf("%s",str2);

printf("\n请输入转变后文件的保存路径:");

scanf("%s",file);

fp=fopen(file,"w");

s1=strlen(str1);

s2=strlen(str2);

k=0;

while(b[k])//消除由于case2和case3带来的影响b[k++]='\0';

k=0;

for(j=0;j

{

n=0;

while(str1[n]==a[j]&&n

if(n==s1) d[k++]=j-n,j--;

} Array x=0,y=0,z=0;

while(x

{

while(z

b[y++]=a[z++];

n=0;

while(n

b[y++]=str2[n++];

x++;

}

while(z

b[y++]=a[z++];

for(x=0;x

{

fprintf(fp,"%c",b[x]);

printf("%c",b[x]);

}

fclose(fp);

break;

case 5:break;

default:printf("输入错误!");

}

}while(c!=5);

}

4.程序运行展示

首先在D盘建立c_language的文件夹,并在其中建立a、b、c、d四个txt 文件,其中a.txt是指定的文本文件。

第一步:读取指定的文本文件,并将信息输出

功能一

功能二

功能三

功能四

功能五

5.设计总结

文本编辑器这个c语言课程设计课题,主要是对文本文件进行处理,最主要是将指定的文本文件中读取出来并且将文件中的字符赋到字符数组

中,然后对字符进行处理。在编程中遇到的困难主要是如何将指定的文本

文件读取出来。其中涉及到文件的打开,读取,结束。在刚开始编程的时

候,试过许多的函数。比如说,fread函数,在工程应用中,有时候需要

从文件中对数据进行批量的复制或存储,所以要使用数据段处理函数fread

和fwrite函数。但是这个函数是事先要知道你所要读取的数据段的大小,所以最终并没有采取这个函数。除了读取函数,还有对字符串的处理。比

如说在功能四中,被替换和替换的字符串长度不一样的话,还要对字符的

相应位置进行处理。除了这些困难,其他就是如何将这个程序编写的规范,清楚。因为其中运用到许多的循环,选择语句。比如for,while,switch

语句,还有语句的嵌套,所以比较复杂。

最终通过查询书本,向老师同学请教,最后这些困难都得以解决。6.心得体会及致谢

经过这次c语言的编程,使我更加懂得c语言的逻辑性。想要编好一个程序,必须要对c语言中的各个函数了解而且要熟练掌握运用。在编程

中要小心严谨,有时候,一个逗号或者分号都会对整个程序的设计产生影

响。自己不懂的知识,要及时查询书本或者向老师同学请教,这样才能及

时查漏补缺,完善自己的程序。

编程序除了要将规定的功能编出来,还要在这个基础上,将程序编的有条理,简洁,一目了然。这样才能编出比较好的程序来。

最后,感谢老师的指导和同学们的帮助。

【参考文献】

《C语言课程设计与项目实践》

《C程序设计》

7.答辩记录

8.教师意见

文本编辑器c++实验报告附源代码

四川大学软件学院 实验报告 课程名称数据结构实验课时8 实验项目文本编辑器实验时间12到14周实验目的了解c++类的封装和KMP算法。 实验环境 Windows平台 VC6.0++ 实验内容(算法、程序、步骤和方法) 部分函数创建思想: 创建过程如下: a、定义LinkList指针变量*temp: LinkList *temp; b、定义文本输入变量ch,记录文本行数变量j,记录每行字符数变量i; c、申请动态存储空间:head->next=(LinkList *)malloc(sizeof(LinkList)); d、首行头指针的前驱指针为空:head->pre=NULL; 首行指针:temp=head->next; 首行指针的前驱指针也为空:temp->pre=NULL; 定义没输入字符时文章长度为0:temp->length=0; 初始化为字符串结束标志,防止出现乱码:for(i=0;i<80;i++) temp->data[i]='\0'; e、利用循环进行文本输入 for(j=0;jdata[i]=ch; //给temp指向的行赋值 ···· temp->length++;//行中字符长度加1 if(ch=='#') {NUM=j; break; //文章结束时,Num来记录整个文章的行数 }}} 在字符输入的过程中,如果在单行输入的字符超过了80个字符, 则需要以下操作: 输入字符数大于80,重新分配空间建立下一行 temp->next=(LinkList *)malloc(sizeof(LinkList)) ;

c语言程序设计第二章课后参考答案

第二章:C程序的基本结构 一、单项选择题 1、以下不是C语言的特点的是________。 A)语言的表达能力强B)语言定义严格 C)数据结构系统化 D)控制流程结构化 2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。 A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行 3、以下不是二进制代码文件是________。 A)标准库文件 B)目标文件C)源程序文件 D)可执行文件 4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY 6、以下不属于流程控制语句的是_________。 A)表达式语句 B)选择语句 C)循环语句 D)转移语句 7、下面描述中,不正确的是________。 A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。 C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。 8、下面描述中,正确的是________。 A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。 二、填空题 1、一个完整的C程序至少要有一个________函数。(主函数) 2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统) 3、C语言是以________为基本单位、整个程序由________组成。(函数函数) 4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出) 5、标准库函数存放在________文件中。(函数库) 6、目标程序文件的扩展名是________。(.obj) 7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数) 8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

简单文本编辑器——课程设计(delphi)

目录 1内容简介 (3) 2程序设计流程及方法 (3) 2.1 设计思路 (3) 2.2 事件响应方法 (4) 3测试结果 (5) 3.1调试方法 (5) 3.2调试过程 (5) 3.3调试结果 (6) 4分析与探讨 (8) 4.1 函数的使用 (8) 4.2 人性化设计 (9) 独立性声明 (11) 一个简单的文本编辑器

一、内容简介 为满足个人的个性需求,为此设计一个有着自己特色的文本编辑器,实现自己的特定用途。 本实例程序可以对文本进行基本的编辑;能执行基本的文件操作;同时它的状态栏具有提示信息、显示时间及当前光标位置的功能。 而重点在于熟悉Delphi中ObjectTreeView、ObjectInspector等的用法及相应的属性设置以及一些插件的使用。源代码的编写是重中之重。 开发的这个类似于“写字板”的程序,不过功能要相对简单一些。该程序的主要功能包括: 1、能执行基本的文件操作,包括新建、打开、保存一个文本文件 2、能对文本进行基本的编辑操作,包括剪切、复制、粘贴、删除、选择及查找 3、能对文本进行简单的格式化操作,包括改变文本的字体、字号、对其方式等 4、可以在状态栏显示提示信息、当前光标位置以及系统日期和时间 二、程序设计流程及方法 (一)、设计思路 基本思路:先创建一个窗体,添加菜单栏,工具栏以及状态栏,然后利用ActionManger建立一些基本指令,通过修改基本指令的属性来制作菜单和快捷键,并把它们放到菜单栏和工具栏边上。然后再添加一个ComboEx和Edit来作为字体的模式和大小的设置项,这样就建立起了一个用户界面和完成了部分功能,对于不能直接通过属性设置的功能,则通过编写时间的源代码来实现。 按照面向对象程序的设计方法,在应用程序框架下,利用VCL(Visual Compoment Library,可视化组件)进行填充,本程序将用到Delphi7提供的RichEdit、ImageList、ActionManger、ActionMainMenuBar、ActionToolBar和StatusBar组件。 在ActionManger组件中,将使用Delphi 7提供的一些标准的指令,这样可

几种常用网页文本编辑器总结

文本编辑器应用总结 一.lhgeditor文本编辑器 lhgeditor组件文件结构: 1. lhgeditor.js:组件的核心JS文件 2. lhgeditor.css:组件的样式表文件 3. images:组件所需的图片都在此文件夹中 以上三个文件为组件所必须的三个文件,组件包中其它以“_”开头的文件为示例的演示文件,实际使用中不需要这些文件。当然框架核心文件lhgcore.js是每个组件都必须用到的文件,记得加载组件前先要加载此文件。 lhgeditor组件使用说明: 1. 在调用组件的页面加载lhgcore.j s和lhgeditor.js两个文件。 2. 在window.onload函数里加入J.editor.add(编辑器的id).init(); 例:

二.nicEdit文本编辑器