串的查找和替换

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

中北大学

数据结构

课程设计说明书

2011年12月15日

1.设计任务概述(包括系统总体框图及功能描述)

使用该系统可实现从指定源文件中查找到指定的单词,并实现用指定的单词替换该单词的功能。

2.本设计所采用的数据结构(如:链表、栈、树、图等)

一维数组

3.功能模块详细设计

3.1 详细设计思想

要想实现设计任务中所要求实现的功能,系统模块需分为两部分,即查找模块与替换模块,在查找成功的情况下进入替换模块进行替换。在查找时,将源文件进行读操作,并放入设置好的一维数组中,在此过程中,同时进行与制定单词进行比对的操作,完成后,进入替换模块,在数组中找到指定单词所在的位置,用制定单词替换该单词。完成后写入源文件,形成新的源文件,保存退出。

……………………….

3.2 核心代码

查找模块;

FILE *fp;

printf("请输入要查找的单词: ");

gets(keyWords);

printf("请输入要替换的单词: ");

gets(copyWords);

if (NULL == (fp = fopen("123.txt", "r")))/* 读文件 */

{

printf("文件打开失败!\n");

exit(1);

}

while (!feof(fp))/* 读文件 */

{

strOne[countOne++] = fgetc(fp);

}

countOne--;/* 减去最后一个文件结束字符 */

for (i=0; i

{

if (keyWords[0] == strOne[i])/* 判断查找单词第一个字符是否匹配 */ {

if ((' ' == strOne[i-1]) || ('\n' == strOne[i-1]) || (0 == i))/* 1.检查单词前的一个字符 */

{

flag = 1;

countFlag = i + 1;

for (j=1; keyWords[j]!='\0'; j++)

{

if (keyWords[j] != strOne[countFlag++])/* 是否匹配 */

{

flag = 0;

break;

}

}

替换模块:

if ((' ' == strOne[countFlag]) ||

('\n' == strOne[countFlag]) ||

(EOF == strOne[countFlag]))/* 2.检查单词后的一个字符 */

{

if (1 == flag)/* 若匹配,则进行拷贝 */

{

i = countFlag-1;

for (j=0; copyWords[j]!='\0'; j++)

{

strTwo[countTwo++] = copyWords[j];

}

}

}

else/* 另外 */

{

strTwo[countTwo++] = strOne[i];

}

}

else/* 另外 */

{

strTwo[countTwo++] = strOne[i];

}

}

else/* 另外 */

{

strTwo[countTwo++] = strOne[i];

}

}

fclose(fp);

if (NULL == (fp = fopen("123.txt", "w")))/* 写入文件 */ {

printf("文件打开失败!\n");

exit(1);

}

for (i=0; i

{

fputc(strTwo[i], fp);

}

fclose(fp);

}

3.3 程序运行结果(拷屏)

将文件中的所有you替换为me。替换前文件:

替换后文件:

4.课程设计心得、存在问题及解决方法。

通过此次课程设计,学会了许多编程上的知识,以及许多与串的查找与替换相关的函数,对C语言有了更深的认识。提高了专业素质。同时,通过此次课程设计,锻炼了自我,提高了自己遇到问题解决问题的能力。收获很大。

不过,问题还是存在的,该系统无法实现多个单词同时查找,同时替换的功能。具体解决办法还没有思考出来,在以后的学习中,我会多了解一下相关的资料。争取早日解决该问题,完善该系统。

附源代码:

3.详细设计:

#include

#include

#define SIZE 20 /* 查找单词字符和输入替换单词少于20 */

#define MAXLEN 10000 /* 文章字符不大于10000 */

int main(void)

int i, j;

int flag; /* 用于标记匹配单词 */

int countFlag; /* 用于检查匹配计数 */

int countOne = 0; /* 记录未改文章字符个数 */

int countTwo = 0; /* 记录改后文章字符个数 */

char keyWords[SIZE]; /* 查找单词 */

char copyWords[SIZE];/* 替换单词 */

char strOne[MAXLEN]; /* 将未改文章的所有字符储存在里面 */ char strTwo[MAXLEN]; /* 将改后文章的所有字符储存在里面 */

FILE *fp;

printf("请输入要查找的单词: ");

gets(keyWords);

printf("请输入要替换的单词: ");

gets(copyWords);

if (NULL == (fp = fopen("123.txt", "r")))/* 读文件 */

{

printf("文件打开失败!\n");

exit(1);

}

while (!feof(fp))/* 读文件 */

{

strOne[countOne++] = fgetc(fp);

相关文档
最新文档