13.字串形式的數字轉數值型別
阿新 • • 發佈:2021-07-08
#include <stdio.h> #include <stdlib.h> int main() { char * spt = " 1100100.1111end...."; printf("將字串%s轉成數值型別:====2int:%d====2long:%ld====2double:%f\n", spt, atoi(spt), atol(spt), atof(spt) ); /* 1.int atoi(const char *nptr) 2.long int atol(const char *nptr) 3.double atof(const char *nptr) 注意事項:1.函式會掃描引數 nptr字串,會跳過前面的空白字元(例如空格,tab縮排) 2.如果 nptr不能轉換成 int 或者 nptr為空字串,那麼將返回 0 3.該函式要求被轉換的字串是按十進位制數理解的*/ char *endpt; long int l1 = strtol(spt,&endpt,2); printf("原字串為:%s====long:%ld====剩餘的:%s\n", spt ,l1 ,endpt ); /* 1.long int strtol(const char *nptr,char **endptr,int base); 2.unsigned long int strtoul(const char *nptr,char **endptr,int base); 3.double strtod(const char *nptr,char **endptr,int base); 引數1:指定被掃描的字串 引數2:endptr是一個傳出引數,函式返回時指向後面未被識別的第一個字元。 例如 char *pos; strtol("123abc", &pos, 10); strtol返回123 pos指向字串中的字母a。 如果字串開頭沒有可識別的整數, 例如char *pos; strtol("ABCabc", &pos, 10); 則strtol返回0,pos指向字串開頭,可以據此判斷這種出錯的情況,而這是atoi處理不了的 引數3:不僅可以識別十進位制整數,還可以識別其它進位制的整數,取決於base引數, 比如 strtol("0XDEADbeE~~", NULL, 16) 返回0xdeadbee的值,s trtol("0777~~", NULL, 8)返回0777的值。*/ return 0; }