提交记录 #401
提交时间:2024-12-03 16:32:55
语言:c
状态:Unaccepted
编译情况:编译成功
code.c: In function ‘replace’:
code.c:6:9: warning: unused variable ‘s_len’ [-Wunused-variable]
6 | int s_len = strlen(s);
| ^~~~~
固定测试点#1:
固定测试点#2:
固定测试点#3:
附加测试点暂不可用
52【字符】字符替换*——用指针更方便
#include <stdio.h>
#include <string.h>
void replace(char *s, char *t, char *str) {
int s_len = strlen(s);
int t_len = strlen(t);
int str_len = strlen(str);
int j = 0;
char k[100] = {0}; // 确保有足够的空间存储结果
while (*s != '\0') {
int match = 1; // 假设当前位置匹配
for (int i = 0; i < t_len; ++i) {
if (s[i] == '\0' || s[i] != t[i]) {
match = 0;
break;
}
}
if (match) { // 如果找到匹配的子串t
for (int m = 0; m < str_len; ++m) {
k[j++] = str[m];
}
s += t_len; // 移动s指针跳过t
} else { // 如果没有找到匹配的子串
k[j++] = *s; // 复制当前字符
++s; // 移动s指针
}
}
k[j] = '\0'; // 确保字符串以'\0'结尾
strcpy(s, k); // 将k的内容复制回s的起始位置
}
int main() {
char s[100];
char t[100]; // 增加t的大小以避免潜在的溢出
char str[100]; // 增加str的大小以避免潜在的溢出
fgets(s, sizeof(s), stdin);
if (s[strlen(s) - 1] == '\n') {
s[strlen(s) - 1] = '\0';
}
fgets(t, sizeof(t), stdin);
if (t[strlen(t) - 1] == '\n') {
t[strlen(t) - 1] = '\0';
}
fgets(str, sizeof(str), stdin);
if (str[strlen(str) - 1] == '\n') {
str[strlen(str) - 1] = '\0';
}
replace(s, t, str);
printf("%s\n", s);
return 0;
}