#include <stdio.h> #include <string.h>

#define MAXLEN 100

typedef struct { char data[MAXLEN]; int length; } SeqString;

// 初始化顺序串 void InitSeqString(SeqString *s, char *str) { int len = strlen(str); if (len > MAXLEN) { len = MAXLEN; } for (int i = 0; i < len; i++) { s->data[i] = str[i]; } s->length = len; }

// 输出顺序串 void PrintSeqString(SeqString s) { for (int i = 0; i < s.length; i++) { printf("%c", s.data[i]); } printf("\n"); }

// 顺序串替换 void StrReplace(SeqString *s, char *t, char *v) { int len_t = strlen(t); int len_v = strlen(v); int i, j, k; for (i = 0; i <= s->length - len_t; i++) { for (j = i; j < i + len_t; j++) { if (s->data[j] != t[j-i]) { break; } } if (j == i + len_t) { if (len_t == len_v) { for (k = i; k < i + len_v; k++) { s->data[k] = v[k-i]; } } else if (len_t < len_v) { for (k = s->length - 1; k >= i + len_t; k--) { s->data[k + len_v - len_t] = s->data[k]; } for (k = i; k < i + len_v; k++) { s->data[k] = v[k-i]; } s->length += len_v - len_t; } else { for (k = i + len_t; k < s->length; k++) { s->data[k + len_v - len_t] = s->data[k]; } for (k = i; k < i + len_v; k++) { s->data[k] = v[k-i]; } s->length += len_v - len_t; } i += len_v - 1; } } }

int main() { SeqString s; char str[MAXLEN], t[MAXLEN], v[MAXLEN]; printf("Enter a string: "); scanf("%s", str); InitSeqString(&s, str); printf("Enter the string to replace: "); scanf("%s", t); printf("Enter the replacement string: "); scanf("%s", v); StrReplace(&s, t, v); printf("The new string is: "); PrintSeqString(s); return 0;

c语言编写算法实现顺序串的基本操作 StrReplace&stv

原文地址: https://www.cveoy.top/t/topic/fHo4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录