頭文件: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" ← 最常用於十六進制顯示
頭文件:string.h
原型:size_t strlen(const char *s)
功能:返回字符串中 \0 之前的字符個數,不包含 \0 自身。
| 函數 | 原型 | 行為 | 注意事項 |
|---|---|---|---|
| strcat | char *strcat(char *dest, const char *src) | 將 src 完整追加到 dest 末尾,覆蓋 dest 的 \0,重新添加 \0 | dest 必須有足夠空間;src 和 dest 不可重疊 |
| strncat | char *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 個字符
snprintf、strncat 替代無長度限制版本sprintf 返回寫入長度,可用於連續寫入定位%08X 格式是調試內存/寄存器值的標準寫法strcpy/strcat 源目標重疊行為未定義,需用 memmove