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

C 語言字串與數值轉換函數完全手冊:atof/atoi/strtol 族與 itoa/gcvt 族詳解

     編輯:關於C語言

字串 → 數值(標準庫)

函數原型說明備註
atofdouble atof(const char *nptr)字串轉 double,支援科學記號等同 strtod(nptr, NULL)
atoiint atoi(const char *nptr)字串轉 int等同 strtol(nptr, NULL, 10)
atollong atol(const char *nptr)字串轉 long等同 strtol(nptr, NULL, 10)
strtoddouble strtod(const char*, char**)字串轉 double,可取得結束位置支援進制前綴
strtollong strtol(const char*, char**, int base)字串轉 long,base 2~36 或 0(自動)溢位設 errno=ERANGE
strtoulunsigned long strtoul(...)字串轉 unsigned long同 strtol 但無符號

共同行為:跳過前導空白 → 遇數字/符號開始 → 遇非數字或 \0 結束 → endptr 回傳停止位置。

數值 → 字串(標準庫)

函數原型特點
gcvtchar *gcvt(double val, int ndigit, char *buf)四捨五入,含小數點/符號,結果存 buf
ecvtchar *ecvt(double val, int ndigit, int *decpt, int *sign)不含小數點,decpt 回傳小數點位置
fcvtchar *fcvt(double val, int ndigit, int *decpt, int *sign)固定小數位數,其餘同 ecvt

常用非標準擴充(Windows/舊 Unix)

char *itoa(int value, char *str, int radix);   // 2~36 進制
char *ltoa(long value, char *str, int radix);
char *ultoa(unsigned long value, char *str, int radix);

標準 C 可用 sprintf(buf, "%d", val) 或 snprintf 替代,更安全可攜。

字元大小寫轉換

  • tolower(c) / toupper(c):<ctype.h>,僅影響字母
  • toascii(c):清除第 8 位,轉 7-bit ASCII

避坑指南

  • atoi 等舊函數無錯誤回報,建議改用 strtol 族並檢查 endptr 与 errno
  • gcvt/ecvt/fcvt 非執行緒安全(靜態緩衝區),多執行緒請用 snprintf
  • itoa 族非標準,跨平台專案請自行封裝或用 sprintf
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved