提交记录 #438
提交时间:2024-12-04 15:04:12
语言:c
状态:Unaccepted
编译情况:编译成功
固定测试点#1:
固定测试点#2:
固定测试点#3:
额外测试点#13:
52【字符】字符替换*——用指针更方便
#include <stdio.h>
#include <string.h>
#define MAX_LEN 101 // 定义源字符串的最大长度为100+1,用于存储结尾的空字符
int main() {
char s[MAX_LEN]; // 源字符串
char t[11]; // 被替换的子字符串
char str[11]; // 替换子字符串
char result[MAX_LEN]; // 存放替换后的字符串
int len_s, len_t, len_str, i, j, k, count = 0; // 变量声明
// 读取输入
fgets(s, MAX_LEN, stdin); // 读取源字符串,包含换行符
fgets(t, 11, stdin); // 读取被替换的子字符串,包含换行符
fgets(str, 11, stdin); // 读取替换子字符串,包含换行符
// 去除换行符
s[strcspn(s, "\n")] = 0;
t[strcspn(t, "\n")] = 0;
str[strcspn(str, "\n")] = 0;
len_s = strlen(s); // 获取源字符串长度
len_t = strlen(t); // 获取被替换子字符串长度
len_str = strlen(str); // 获取替换子字符串长度
// 初始化结果字符串为空(实际上不需要,因为后面会直接构建)
// 但为了保持一致性,这里还是进行初始化
result[0] = '\0';
// 进行字符串替换
i = 0; // 源字符串索引
j = 0; // 结果字符串索引
while (i < len_s) {
// 检查从s[i]开始的子串是否匹配被替换子字符串t
int match = 1;
for (k = 0; k < len_t; k++) {
if (s[i + k] != t[k]) {
match = 0;
break;
}
}
if (match) {
// 匹配成功,添加替换子字符串到结果字符串
strcpy(result + j, str);
j += len_str; // 更新结果字符串索引
i += len_t; // 跳过被替换的子字符串部分
count++; // 记录替换次数(此例中可能不需要,但为了完整性保留)
} else {
// 不匹配,添加当前字符到结果字符串
result[j++] = s[i++];
}
}
result[j] = '\0'; // 确保结果字符串以空字符结尾
// 输出替换后的字符串
printf("%s\n", result);
return 0;
}