首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言字符串拼接練習:手動實現 strcat 邏輯填空

     編輯:C 語言問答

字符串拼接核心邏輯:查找末尾、逐字符複製、添加結束符

題目要求在不使用庫函數 strcat 的前提下,手動將 s2 拼接到 s1 末尾。關鍵步驟為:

  1. 遍歷 s1 找到 '\0' 位置(索引 i)。
  2. 遍歷 s2,將每個字符依次複製到 s1[i++]。
  3. 最後在 s1 新末尾寫入 '\0'。

填空答案

while (s2[j] != '\0') {
    s1[i] = s2[j];
    i++;
    j++;
}

或精簡寫法:

while (s2[j] != '\0')
    s1[i++] = s2[j++];

完整可運行代碼

#include <stdio.h>

int main() {
    char s1[80], s2[40];
    int i = 0, j = 0;

    printf("輸入 s1: ");
    scanf("%s", s1);          // 注意:%s 遇空格停止,含空格請用 fgets
    printf("輸入 s2: ");
    scanf("%s", s2);

    // 找到 s1 末尾
    while (s1[i] != '\0')
        i++;

    // 拼接 s2
    while (s2[j] != '\0')
        s1[i++] = s2[j++];

    s1[i] = '\0';             // 關鍵:補上結束符

    printf("拼接後: %s\n", s1);
    return 0;
}

易錯點提醒

  • 聲明拼寫:原題 shar 應為 char。
  • 緩衝區溢出:s1 大小需 ≥ strlen(s1) + strlen(s2) + 1,否則會越界。
  • 輸入含空格:scanf("%s") 讀不到空格,實際項目建議用 fgets 並去換行符。
  • printf 格式串中 \ 連接 應為 連接後的字符串為:%s,反斜桿屬誤輸入。

舉一反三:模擬其他字符串函數

函數核心邏輯
strcpy(dest, src)while (*src) *dest++ = *src++; *dest = '\0';
strlen(s)int len=0; while(s[len++]); return len-1;
strcmp(s1, s2)while(*s1 && *s1==*s2) s1++,s2++; return *s1-*s2;

掌握字符串底層操作,有助於深入理解指針與內存模型,也是嵌入式開發、系統編程的必備基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved