文本编辑器C语言程序.docx
- 文档编号:11310124
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:13
- 大小:275.63KB
文本编辑器C语言程序.docx
《文本编辑器C语言程序.docx》由会员分享,可在线阅读,更多相关《文本编辑器C语言程序.docx(13页珍藏版)》请在冰豆网上搜索。
文本编辑器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流程图
因为下文要运用到字符串函数,所以运用#include
预先定义整形和字符型变量
Fscanf函数将指定的文本文件中的内容读入指定的字符数组中。
根据读入数组的字符个数统计出一共字符的个数,再统计出空格和回车的个数,最后两者之差就是字符的个数。
统计单词的个数,行数
运用switch函数,让运行者选择所需要的功能
输入1
查找统计单词或字符的个数
输入2
将所有小写字母变成大写字母
输入3
将所有大写字母变成小写字母
输入4
输入需要被替换的字符或字符串
输入替换的字符或字符串
进行替换
3.2程序解析
#include
#include
voidmain()
{
char]="\0",m[15]="\0";//file是文件地址,m是下面case1里用的
intc,n,s;//c用于switch,n,s是case1里用的
printf("请输入源文件地址:
");
scanf("%s",file);
chara[2000]="\0",b[2000]="\0";
FILE*fp=fopen(file,"r");//这是打开文件并把文件地址指针给fp
if(!
fp)//若是没能打开则运行
{
printf("源文件不存在或地址输入错误!
\n");
}
inti=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--;
intj=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++;
统计和编辑功能
printf("共%d行。
",k);
do
{
printf("\n功能:
统计单词或字符个数请输入1,小写变大写请输入2,大写变小写请输入3,替换字符串请输入4,退出请输入5\n");
scanf("%d",&c);
FILE*fp;
ints1,s2,x,y,z;
charstr1[20]="\0",str2[20]="\0";
intd[200]={0};
switch(c)
{
case1:
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;
case2:
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;
elseb[j]=a[j];
fprintf(fp,"%c",b[j]);
printf("%c",b[j]);
}
printf("文件保存已完成!
\0");
fclose(fp);
break;
case3:
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;
elseb[j]=a[j];
fprintf(fp,"%c",b[j]);
printf("%c",b[j]);
}
printf("\0文件保存已完成!
\0");
fclose(fp);
break;
case4:
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--; 这里的k就是用来统计需要被替换的字符的个数. d[k]则表示在被替换字母前有多少个字符 } x=0,y=0,z=0; while(x { while(z b[y++]=a[z++]; n=0; while(n b[y++]=str2[n++]; z+=s1; x++; } while(z b[y++]=a[z++]; for(x=0;x { fprintf(fp,"%c",b[x]); printf("%c",b[x]); } fclose(fp); break; case5: 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.教师意见
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本 编辑器 语言 程序