文本编辑器 C语言程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文本编辑器
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<stdio.h>,因为下文要使用有关字符串的函数。
具体的要用到strlen函数。
3·详细设计
3·1流程图
3.2程序解析
#include<stdio.h> #include<string.h> 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<i;j++)//统计字符个数 '\40'是转义字符空格
if(a[j]=='\40'||a[j]=='\n')
k++;
j=i-k;//i是总共字符的个数, k是空格与换行的个数
printf("\n此文本中有%d个字符,",j);
for(j=0,k=0;j<i;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<i;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<i;j++)
{
n=0;
while(m[n]==a[j]&&n<s) n++,j++;
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<i;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<i;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<i;j++)
{
n=0;
while(str1[n]==a[j]&&n<s1) n++,j++;
if(n==s1) d[k++]=j-n,j--;
} Array x=0,y=0,z=0;
while(x<k)
{
while(z<d[x])
b[y++]=a[z++];
n=0;
while(n<s2&&z<=i)
b[y++]=str2[n++];
x++;
}
while(z<i)
b[y++]=a[z++];
for(x=0;x<y;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.教师意见。