合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻
一、題目描述 ??
二、代碼(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; // 程序正常結束
}