提交记录 #448
提交时间:2024-12-05 09:16:49
语言:c
状态:Unaccepted
编译情况:编译成功
code.c: In function ‘replaceSubstring’:
code.c:12:9: warning: unused variable ‘len_rep’ [-Wunused-variable]
12 | int len_rep = strlen(replacement);
| ^~~~~~~
code.c:11:9: warning: unused variable ‘len_tgt’ [-Wunused-variable]
11 | int len_tgt = strlen(target);
| ^~~~~~~
固定测试点#1:
固定测试点#2:
固定测试点#3:
附加测试点暂不可用
52【字符】字符替换*——用指针更方便
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void replaceSubstring(char *source, const char *target, const char *replacement) {
char result[MAX_LEN + 1]; // 用于存储结果的数组,多预留一个字符用于字符串结束符 '\0'
char *ins = result; // result 中的插入指针
const char *src, *tgt, *rep;
int len_tgt = strlen(target);
int len_rep = strlen(replacement);
for (src = source; *src != '\0'; ) {
tgt = target;
// 检查源字符串中是否包含目标字符串
while (*src && *tgt && (*src == *tgt)) {
src++;
tgt++;
}
if (*tgt == '\0') { // 如果目标字符串匹配
for (rep = replacement; *rep != '\0'; ) {
*ins++ = *rep++;
}
src++; // 移动源字符串指针以跳过已匹配的部分
} else { // 如果没有匹配,则复制源字符串的当前字符
*ins++ = *src++;
}
}
*ins = '\0'; // 字符串结束符
strcpy(source, result); // 将结果复制回源字符串
}
int main() {
char s[MAX_LEN + 1];
char t[11];
char 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;
}