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

C語言輸出字符串指定片段的方法:指針算術與循環控制

     編輯:C 語言問答

核心方法

利用指針偏移 *(str + i) 或下標 str[i] 訪問單個字符,配合 for 循環控制起始位置與長度。

代碼示例

#include <stdio.h>

int main(void) {
    char *str = "abcdefg"; // 字符串字面量(只讀)
    int start = 2;         // 起始索引(0-based),即 'c'
    int len = 3;           // 要輸出的字符數

    printf("輸出片段: ");
    for (int i = 0; i < len; ++i) {
        putchar(*(str + start + i)); // 或 putchar(str[start + i]);
    }
    putchar('\n'); // 輸出: cde
    return 0;
}

進階封裝:子串提取函數


// 從 src 起始位置 start 複製 len 字符到 dest,自動添加 \0
// 返回實際複製長度,-1 表示參數非法
int substr(const char *src, int start, int len, char *dest, int dest_size) {
    if (!src || start < 0 || len < 0 || !dest || dest_size <= len) return -1;
    int src_len = 0;
    while (src[src_len]) src_len++;
    if (start >= src_len) return 0;
    if (start + len > src_len) len = src_len - start;
    for (int i = 0; i < len; ++i) dest[i] = src[start + i];
    dest[len] = '\0';
    return len;
}

注意事項

  • 邊界檢查:防止 start+len 越界訪問非法內存。
  • 只讀字面量:char *str = "..." 指向只讀區,不可修改;若需修改,用 char str[] = "..."。
  • 多字節字符:對 UTF-8 中文等,按字節截取會導致亂碼,需用寬字符 wchar_t 或 UTF-8 庫處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved