atoi
#include <stdlib.h>
int atoi(const char *nptr);
atoi把一個字符串開頭可以識別成十進制整數的部分轉換成int型 。
例如:
atoi("123abc");//返回值是123,
atoi(" -90.6-");//字符串開頭可以有若干空格,返回值是-90
atoi("asdf");//如果字符串開頭沒有可識別的整數,則返回0
atoi("0***");//也返回0,根據返回值並不能區分上面這兩種情況,所以使用atoi函數不能檢查出錯的情況。
atof
#include <stdlib.h>
double atof(const char *nptr);
atof把一個字符串開頭可以識別成浮點數的部分轉換成double型。
字符串開頭可以識別的浮點數格式和C語言的浮點數常量相同:
atof("31.4 ");//返回值是31.4
atof("3.14e+1AB");//返回值也是31.4
strtol
#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
strtol是atoi的增強版,主要體現在這幾方面:
- 不僅可以識別十進制整數,還可以識別其它進制的整數,取決於base參數。
- endptr是一個傳出參數,函數返回時指向后面未被識別的第一個字符。
- 如果字符串中的整數值超出long int的表示范圍(上溢或下溢),則strtol返回它所能表示的最大(或最小)整數,並設置errno為ERANGE。
strtol("0XDEADbeE~~", NULL, 16);//返回0xdeadbee的值
strtol("0777~~", NULL, 8);//返回0777的值
strtod
#include <stdlib.h>
double strtod(const char *nptr, char **endptr);
trtod是atof的增強版,增強的功能和strtol類似。