#include <stdlib.h> | |
double atof(const char *nptr);
|
將字符串轉換成雙精度浮點數 |
int atoi(const char *nptr);
|
將字符串轉換成整形數 |
long atol(const char *nptr); | 將字符串轉換成長整型數 |
double strtod(const char *nptr, char **endptr);
|
將字符串轉換成雙精度浮點數 |
long int strtol(const char *nptr, char **endptr, int base); | 將字符串轉換成長整型數 |
unsigned long int strtoul(const char *nptr, char **endptr, int base); | 將字符串轉換成無符號長整型數 |
char *gcvt(double number, int ndigit, char *buf); | 將浮點數轉換成字符串,取四舍五入 |
api介紹(學習方法)如何看懂一個api
double atof(const char *nptr); 將字符串轉換成雙精度浮點數
看函數,
首先看參數 const char *nptr,根據之前學習的基礎,首先看到這是一個指針,而且有const char,代表這是一個字符串指針 .
所以要得到兩點結論:
1. 傳進來的參數是一個指針,字符串的指針
2. 傳進來的參數是受const保護的,也就是說,在這個函數里面,它的內容將不會發生修改 .進函數前是什么樣子, 函數結束后還是什么樣子.
然后再看返回值 double
說明在調用這個函數的時候,我們需要聲明一個變量得是double 類型的來接收這個函數反回的值.
atoi atof atol 這三個函數的參數是字符型指針常量,返回值 為 數值字符串 轉化后的數值.
int atoi(const char *nptr);

------------------------------------------------------- int main(void) { const char *buf="365.3day"; int day; day = atoi(buf); printf("%d\n",day); //365 } -------------------------------------------------------
double strtod(const char *nptr, char **endptr);

------------------------------------------------------- int main(int argc, char **argv) { const char *buf="456.78秒"; double sec; //因為要接收一個字符串指針,所以就定義一個字符串指針 char *p; //因為參數傳遞是拷貝的概念,值傳遞只是拷貝副本,並不影響本身,所以把參數當做修改入口的話,要取它的地址傳遞 //指針變量p 的地址是 &p; 跟普通變量 a 的地址 &a是一樣的. //而且p是指針,函數strtod 的形參剛好也是要求的char **p;和實參設計不謀而合 . sec = strtod(buf,&p); printf("sec is %0.2f\n",sec); //sec is 456.78 printf("left str is: %s\n",p); //left str is: 秒 } -------------------------------------------------------
所以這個函數的功能就是將字符串數字開頭的部分通過返回值返回,然后將剩下的非數字部分的指針賦給指針*p,這樣*p就指向非數字部分,可以輸出.
long int strtol(const char *nptr, char **endptr, int base); 將字符串轉換成長整型數:
unsigned long int strtoul(const char *nptr, char **endptr, int base); 將字符串轉換成無符號長整型數:

//參數 int base是規定轉換數字的進制數 int main(int argc, char **argv) { const char *buf="1234567sec"; long int sec; //用於接收返回值 char *tmp; //指向剩下字符串指針 int base = 10; //10進制 sec=strtol(buf,&tmp,base); printf("sec is: %ld\n",sec); //1234567 printf("left src is: %s\n",tmp); //left src is: sec return 0; } -------------------------------------------------------