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

C語言字符串處理核心函數精講:sprintf、strlen、strcat、strncat 實戰用法

     編輯:關於C語言

1. sprintf - 格式化輸出到字符串

頭文件:stdio.h
原型:int sprintf(char *buffer, const char *format, ...)
返回值:寫入字符數(不含結束符 \0)

核心用法示例

char s[100];

// 整數轉字符串(替代 itoa)
sprintf(s, "%d", 123);           // "123"

// 指定寬度、右對齊、左側填空格
sprintf(s, "%8d%8d", 123, 4567); // "    123   4567"

// 左對齊
sprintf(s, "%-8d%8d", 123, 4567); // "123     4567"

// 十六進制輸出
sprintf(s, "%8x", 4567);         // "    11d7" (小寫)
sprintf(s, "%-8X", 4568);        // "11D8    " (大寫)

// 關鍵技巧:寬度前加 0 實現左側補零等寬格式
sprintf(s, "%08x", 4567);        // "000011d7"  ← 最常用於十六進制顯示

2. strlen - 獲取字符串長度

頭文件:string.h
原型:size_t strlen(const char *s)
功能:返回字符串中 \0 之前的字符個數,不包含 \0 自身。

3. strcat / strncat - 字符串拼接

函數原型行為注意事項
strcatchar *strcat(char *dest, const char *src)將 src 完整追加到 dest 末尾,覆蓋 dest 的 \0,重新添加 \0dest 必須有足夠空間;src 和 dest 不可重疊
strncatchar *strncat(char *dest, const char *src, size_t n)追加 src 前 n 字符,自動添加 \0同 strcat;n 超過 src 長度時等同 strcat

關鍵差異對比

// strncpy 不保證以 \0 結尾(除非 n > src 長度)
// strncat 總是保證結果以 \0 結尾

// 進階用法:從指定位置開始拷貝/追加
strcpy(dest, src + x);      // 從 src 第 x 字符開始拷貝
strncpy(dest, src + x, n);  // 從 src 第 x 字符拷貝 n 個
strcat(dest, src + x);      // 追加 src 第 x 字符開始的內容
strncat(dest, src + x, n);  // 追加 src 第 x 字符開始的 n 個字符

實戰建議

  1. 緩衝區安全:使用 snprintf、strncat 替代無長度限制版本
  2. 返回值利用:sprintf 返回寫入長度,可用於連續寫入定位
  3. 十六進制顯示:%08X 格式是調試內存/寄存器值的標準寫法
  4. 避免重疊:strcpy/strcat 源目標重疊行為未定義,需用 memmove
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved