(用atoi系列)字串轉化為數字 整型 浮點型

2021-08-02 08:12:20 字數 2258 閱讀 8280

標頭檔案必須包含 #include

atof()、atoi()、atol()、strtod()、strtol()、strtoul() 

(1)atof

函式 atof() 用於將字串轉換為雙精度浮點數(double),其原型為:

double atof (const char* str);

atof() 的名字**於 ascii to floating point numbers 的縮寫,它會掃瞄引數str字串,跳過前面的空白字元(例如空格,tab縮排等,可以通過 

isspace()

函式來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時('\0')才結束轉換,並將結果返回。引數str 字串可包含

正負號、小數點或e(e)來表示指數部分

,如123. 456 或123e-2。  如果是以非數字開頭,則返回0.

【返回值】返回轉換後的浮點數;如果字串 str 不能被轉換為 double,那麼返回 0.0。

*d = "100.34cyuyan",

*e = "cyuyan";

printf("d = %.2f\n", atof(d));

printf("e = %.2f\n", atof(e));

執行結果:

d = 100.34

e = 0.00

(2)atoi

atoi() 函式用來將字串轉換成整數(int),其原型為:

int atoi (const char * str);

【函式說明】atoi() 函式會掃瞄引數 str 字串,跳過前面的空白字元(例如空格,tab縮排等,可以通過 

isspace()

函式來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時('\0')才結束轉換,並將結果返回。如果是以非數字開頭,則返回0.

(3)atol

atol() 函式的名字源於「ascii to long」,用來將字串轉換成長整型數(long),其原型為:

long atol(const char * str);

【函式說明】atol() 會掃瞄引數 str 字串,跳過前面的空白字元(例如空格,tab縮排等,可以通過 

isspace()

函式來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時('\0')才結束轉換,並將結果返回。

如果是以非數字開頭,則返回0.

【返回值】返回轉換後的長整型數(long);如果 str 不能轉換成 long 或者 str 為空字串,那麼將返回 0。

char *str1="12344444.22aa";

char *str2="aa12344444.22";

printf("%ld\n%ld\n",atol(str1),atol(str2));

輸出結果:

12344444

0(4)strtod

函式 strtod() 用來將字串轉換成雙精度浮點數(double),其原型為:

double strtod (const char* str, char** endptr);

【引數說明】str 為要轉換的字串,endstr 為第乙個不能轉換的字元的指標。

【函式說明】strtod() 函式會掃瞄引數str字串,跳過前面的空白字元(例如空格,tab縮排等,可以通過 

isspace()

函式來檢測),直到遇上數字或正負符號才開始做轉換,到出現非數字或字串結束時('\0')才結束轉換,並將結果返回。引數 str 字串可包含正負號、小數點或e(e)來表示指數部分。如123. 456 或123e-2。

若endptr 不為null,則會將遇到的不符合條件而終止的字元指標由 endptr 傳回;若 endptr 為 null,則表示該引數無效,或不使用該引數。

【返回值】返回轉換後的浮點型數;若不能轉換或字串為空,則返回 0.0。

char *str3="123.54a2344";

char *pend;

char *pend2;

double a=strtod(str3,&pend);

double b=strtod(pend,&pend2);

printf("%c %c\n",*pend,*pend2);

printf("%.2f %.2f\n",a,b);

結果輸出:

a a123.54 0.00

因為檢測遇到'a'後停止,所以第乙個可以輸出123.54,但是第二個strtod(),從『a』開始檢測,『a』非數字符也非空白符,所以直接停止。

字串轉化為數字

如何把entry中輸入的字串轉化為對應的數字 例如,如果輸入為s 0 12 3 40 怎麼把它轉化為對應的數字呢?根據需要,胡亂寫了 記錄在此。功能 把字串轉化為數字列表 輸入s 字串 輸出 數字列表 def strtonum s s 0 12 3 40 p 用來存放字串中的數字 0,1,2,3,4...

高階版字串轉化為整數(atoi

這道題是在劍指 offer 67.把字串轉換成整數的基礎上衍生出來的,它需要處理更多的複雜情況,我們來看一下吧!程式設計實現將字串轉換為整型數 int my atoi const char str 遇到非數字字母,停止轉換 示例 str 234.324 返回值是234 首先出現空格的字串可以轉換,轉...

將數字轉化為字串

將數字轉化為字串 方法一 include int main void temp 0 scanf d num number num do while number 0 string i 0 printf number d,位數是 d位 n num,i 統計出位數 for j 0,i j i 2 j i...