1. 程式人生 > 其它 >13.字串形式的數字轉數值型別

13.字串形式的數字轉數值型別

#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; }