#include <stdio.h> # include <string.h> #define MaxSize 100 typedef struct { char data[MaxSize]; int length; } SqString; void Assign(SqString &s,char str[]) { int i=0; while (str[i]!='\0') { s.data[i]=str[i]; i++; } s.length=i; } void DispStr(SqString s) { int i; for (i=0;i<s.length;i++) printf("%c",s.data[i]); printf("\n"); } int Index(SqString s,SqString t) { int i=0,j=0; while (i<s.length && j<t.length) { if (s.data[i]==t.data[j]) { i++; j++; } else { i=i-j+1; j=0; } } if (j>=t.length) return i-t.length+1; else return -1; } int InsStr(SqString &s,int i,SqString t) { int j; if (i<1 || i>s.length+1) return 0; else { for (j=s.length-1;j>=i-1;j--) s.data[j+t.length]=s.data[j]; for (j=0;j<t.length;j++) s.data[i+j-1]=t.data[j]; s.length=s.length+t.length; return 1; } } int DelStr(SqString &s,int i,int j) { int k; if (i<1 || i>s.length || j<1 || i+j>s.length+1) return 0; else { for(k=i+j-1;k<s.length;k++) s.data[k-j]=s.data[k]; s.length=s.length-j; return 1; } } SqString RepStrAll(SqString s,SqString s1,SqString s2) { /**************begin***************/ /**************end***************/ } int main() { SqString s,s1,s2,t; char ss[100],ss1[100],ss2[100]; scanf("%s",ss); scanf("%s",ss1); scanf("%s",ss2); Assign(s,ss); Assign(s1,ss1); Assign(s2,ss2); t=RepStrAll(s,s1,s2); DispStr(t); return 0; }
时间: 2024-01-26 07:02:25 浏览: 65
StudentInformation
这是一个使用 SqString 数据结构实现字符串操作的程序,其中包括字符串赋值函数 Assign、字符串输出函数 DispStr、字符串查找函数 Index、字符串插入函数 InsStr、字符串删除函数 DelStr 和字符串替换函数 RepStrAll。
程序的主函数中,首先通过 scanf 函数从标准输入中读入三个字符串 ss、ss1 和 ss2,然后将它们分别赋值给 SqString 类型的变量 s、s1 和 s2。接着调用 RepStrAll 函数,将 s 中所有与 s1 相等的子串都替换成 s2,并将替换后的字符串 t 输出到标准输出中。
以下是 RepStrAll 函数的实现代码:
```c
SqString RepStrAll(SqString s, SqString s1, SqString s2) {
int len1 = s1.length;
int len2 = s2.length;
int pos = Index(s, s1); // 查找第一个匹配的位置
while (pos != -1) {
DelStr(s, pos, len1); // 删除匹配的子串
InsStr(s, pos, s2); // 插入替换的子串
pos = Index(s, s1); // 查找下一个匹配的位置
}
return s;
}
```
该函数的实现思路与前面提到的 RepStrAll 函数类似,不同之处在于 SqString 数据结构的操作方式与之前的字符串操作函数不同。该函数的返回值是替换后的 SqString 类型字符串 s。
阅读全文