数据结构课程设计(串的查找与替换源代码)

数据结构课程设计<串的查找与替换>

#include
#include
#include

FILE*fp;
char String[65535];
char findString[50];
char replaceString[50];

// char String[]={I,a,m,a,b,o,y};

//从文件DataStructure.txt 初始化String[]
void InitStr()
{
int i =0;
fp=fopen("DataStructure.txt","r");
while(!feof(fp)) //feof()函数检测流上的文件结束符
{
String[i]=fgetc(fp); //fget()函数获取String[]中的字符
i++;
}
if (String[i]='\0')
fclose(fp);
}



//用FindStrings()得到欲查找字符串的数量
void FindStrings()
{
int i,j,k,all=0;
printf("输入要查找的字符串:");
scanf("%s",findString);
for(i=0;i{
j=i;k=0;
while((String[j]==findString[k])&&(findString[k]!='\0')&&(String[j]!='\0')) //寻找要查找字符的个数
{
j++;
k++;
}
if(findString[k]=='\0')
all++; //计数器,每找到一个就+一次
}
printf("Finding successful!\n");
printf("The total numbers of '%s' is %d \n",findString,all);
}



//获取第一个出现欲查找字符的下标。
int FindString()
{
int i,j,k;
for(i=0;i{
j=i;k=0;
while((String[j]==findString[k])&&(findString[k]!='\0')&&(String[j]!='0'))
{
j++;
k++;
}
if(findString[k]=='\0')
return i; //比较结束,返回欲查找的最后一个字符匹配的位置
}
return -1;

}

//从指定的下标开始插入target数组的元素
void Insert(char source[],int index,char target[]) //source[]用来存储源字符串String,target[]用于存储欲替换的字符串,index是开始找到的位置
{
int i,j,k,m;
j=strlen(target);
k=strlen(source);
source[j+k]='\0';
i=j+k-1;
m=k-1;
while(m>=index)
{
source[i]=source[m];
i--;
m--;
}
i=index;
m=0;
while(m{
source[i]=target[m];
i++;
m++;
}
}



//将String中要替换的内容替换掉
void Replace()
{
int pos,b=0;
printf("输入被替换的字符串:");
scanf("%s",&findString);
printf("输入要替换的字符串(且保证其长度与被替换字符串一致):");
scanf("%s",&replaceString);

do
{
pos=FindString();
b=pos;
if(b==-1)
{
printf("您要查找的内容不存在!\n");
return;
}
else
{
while(String[b+strlen(findString)]!='\0')
{
String[b]=String[b+strlen(findString)];
b++;
}
String[b]='\0';
Insert(String,pos,replaceString);
}
pos=FindString();
}while(pos!=-1);

printf("替换成功!\n");

printf("\n");
getchar();
}


//保存修改后的文章内容
void Save()
{
int i=0;
FILE*fp;
fp=fopen("test.txt","w"); //fopen函数打开一个txt类型的文件,定义为

只可写(w)write
while(i{
fputc(String[i],fp); //fputs函数向指定文件写入一个字符。
i++; //i++循环依次写入
}
}


//主界面显示
void Menu()
{
printf("--------------------\n");
printf("----程序主菜单------\n");
printf("--------------------\n");
printf("----1文本文件显示---\n");
printf("----2子串查找-------\n");
printf("----3子串替换-------\n");
printf("----4退出-----------\n");
printf("---回车键返回菜单---\n");
printf("--------------------\n");
printf("---请选择:(1-4)-:---\n");

}

//主函数,调用上面已初始化的函数
void main()
{
char menuNum;
InitStr();
while(1)
{
Menu();
scanf("%d",&menuNum);
switch(menuNum)
{
case 1:
printf("%s\n",String);
// getchar();
break;

case 2:
FindStrings();
break;

case 3:
Replace();
break;

case 4:
Save();
exit(0);
default:
printf("\n输入错误!\n");
printf("按任意键返回....\n");
// getchar();

}
}
}

相关文档
最新文档