提交记录 #359
提交时间:2024-12-02 17:40:35
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
固定测试点#3:
额外测试点#6:
52【字符】字符替换*——用指针更方便
#include <stdio.h>
#include <string.h>
void replaceSubstring(char *s, const char *t, const char *str) {
char buffer[101]; // 用来存放替换后的结果字符串,最大长度为100
int i = 0, j = 0;
int t_len = strlen(t);
int str_len = strlen(str);
while (s[i] != '\0') {
// 检查当前位置是否匹配要替换的子串
if (strncmp(&s[i], t, t_len) == 0) {
// 如果匹配,将替换的字符串复制到 buffer
for (int k = 0; k < str_len; k++) {
buffer[j++] = str[k];
}
i += t_len; // 跳过匹配的子串
} else {
// 否则将当前字符直接复制到 buffer
buffer[j++] = s[i++];
}
}
buffer[j] = '\0'; // 结束字符串
strcpy(s, buffer); // 将替换后的字符串复制回源字符串
}
int main() {
char s[101], t[11], str[11];
// 输入三行
fgets(s, sizeof(s), stdin); // 输入源字符串
s[strcspn(s, "\n")] = '\0'; // 去掉换行符
fgets(t, sizeof(t), stdin); // 输入被替换串
t[strcspn(t, "\n")] = '\0'; // 去掉换行符
fgets(str, sizeof(str), stdin); // 输入替换串
str[strcspn(str, "\n")] = '\0'; // 去掉换行符
// 进行替换
replaceSubstring(s, t, str);
// 输出替换后的字符串
printf("%s\n", s);
return 0;
}