合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
二、代码(C语言)⭐️
#include <stdio.h> // 引入标准输入输出库,用于使用 printf、puts、fgets 等函数
#include <string.h> // 引入字符串处理库,用于使用 strstr、strcpy、strcat、strcspn 等函数int main() {char s1[82], s2[82], t[82]; // 定义三个字符数组,s1 和 s2 用于存储输入字符串,t 用于临时存储// 这里的 82:存储最多 80 个字符的字符串,包括\n和\0。// 读取输入并去除换行符fgets(s1, sizeof(s1), stdin); // 从标准输入读取一行字符串,存储到 s1 中,最多读取 sizeof(s1) - 1 个字符s1[strcspn(s1, "\n")] = '\0'; // 使用 strcspn 找到 s1 中的换行符位置,并将其替换为字符串结束符 '\0'fgets(s2, sizeof(s2), stdin); // 从标准输入读取一行字符串,存储到 s2 中,最多读取 sizeof(s2) - 1 个字符s2[strcspn(s2, "\n")] = '\0'; // 使用 strcspn 找到 s2 中的换行符位置,并将其替换为字符串结束符 '\0'char *p; // 定义一个字符指针 p,用于存储 strstr 的返回值// (p = strstr(s1, s2)) != NULL:当字符串 s1 中有子串 s2 时while ((p = strstr(s1, s2)) != NULL) { // 在 s1 中查找 s2 的首次出现位置,将结果赋值给 p// 将 s2 之后的部分复制到临时数组 t 中strcpy(t, p + strlen(s2)); // 将字符串p从s2长度的位置开始复制,然后赋值给t// 截断 s1,去掉 s2 及其之后的部分*p = '\0'; // 将 s1 中 s2 的起始位置设置为字符串结束符,截断 s1// 将 t 的内容拼接到 s1 的末尾strcat(s1, t); // 将 t 的内容拼接到 s1 的末尾}// 输出处理后的 s1puts(s1); // 输出 s1 的内容,并自动添加一个换行符return 0; // 程序正常结束
}