strtol()函數

/************************************************************
* c primer plus P315 11.29 ---嘗試使用strtol()函數
*************************************************************/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char number[30];
    char *end;
    long value;
   
    puts("Enter a number(empty line to quit):)");
    while(gets(number) && number[0] != '/0')
    {
        value = strtol(number, &end, 10);       //end是個地址,&end就是地址的地址
        printf("value: %ld, stopped at %s(%d)/n", value, end, *end);
        value = strtol(number, &end, 16);
        printf("value: %ld, stopped at %s(%d)/n", value, end, *end);
        puts("next number: ");
    }
    puts("Bye!");
   
    getchar(); 
    return 0;
}

strtol()的函數原型:long strtol(const char *nptr, char **endptr, int base); 第一個參數是要進行操作的字符串,第二個指針的指針,是字符串中指向非數字部分的第一個字符的指針的地址,第三個指出進制,(10就是轉換成十進制的,16就是轉換成16進制的.10就是看做十進制的,16就是看做十六進制的。這個函數得到的數都是十進制的。參數base範圍從2至36,或0。當base值爲0時則是採用10進製做轉換,但遇到如’0x’前置字符則會使用16進製做轉換、遇到’0’前置字符而不是’0x’的時候會使用8進製做轉換。

 

一個輸出示例:

Enter a number(empty line to quit):

10

value: 10, stopped at  (0)     //將“10”看做十進制的,得到10

value: 16, stopped at  (0)     //將“10”看做十六進制的,得到十進制的數16

Next Number:

10atm

value: 10, stopped at atom(97)     //讀完10,下個字符a就不能讀了

value: 266, stopped at tom(116) //讀完10a,下個t不能讀了, 10a轉換成十進制的數266

Next Number:

 

Bye!

發佈了50 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章