Project 5:替换指定字符串

时间:2023-03-08 16:03:27

这个程序主要用于替换指定字符串,较为简单。

#include <stdio.h>
void change(char *,char *,char *);
int ju(char *,char *,int);
void deal(char *,char *,char *,int);
int main()
{
char a[80],b[80],c[80];
printf("请输入原字符串\n");
gets(a);
printf("请输入要替换的字符串\n");
gets(b);
printf("替换为\n");
gets(c);
change(a,b,c);
printf("替换后为\n");
puts(a);
}
void change(char *a,char *b,char *c)
{
int i;
for(i=0;a[i]!='\0';i++)
{
if(a[i]==b[0])
{
if(ju(a,b,i))
{
deal(a,b,c,i);
}
}
}
}
int ju(char *a,char *del,int i)
{
int j;
for(j=0;del[j]!='\0';j++)
{
if(a[i+j]!=del[j]) return 0;
}
return 1;
}
void deal(char *a,char *b,char *c,int i)
{
int j;
int lenc,lenb,lena;
for(lenc=0;c[lenc]!='\0';lenc++);
for(lenb=0;b[lenb]!='\0';lenb++);
for(lena=0;a[lena]!='\0';lena++);
if(lenc>lenb)
{
for(j=lena+(lenc-lenb);j>(i+lenc-lenb);j--)
{
a[j]=a[j-lenc+lenb];
}
}
else
{
for(j=i+lenc;j<lena+lenc-lenb;j++)
{
a[j]=a[j-lenc+lenb];
}
a[j]='\0';
}
for(j=i;j<lenc+i;j++)
{
a[j]=c[j-i];
}
}

其中主要要注意的 是判断要替换的长度 与 替换的字符串长度的关系 并分开判断。