提交记录 #357
提交时间:2024-12-02 17:37:55
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
固定测试点#3:
额外测试点#10:
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[j++] = s[i++]; // 否则将当前字符添加到 buffer
}
}
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;
}