最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析C語言中strtol()函數(shù)與strtoul()函數(shù)的用法

 更新時間:2015年08月24日 15:11:01   投稿:goldensun  
這篇文章主要介紹了淺析C語言中strtol()函數(shù)與strtoul()函數(shù)的用法,注意其將字符串轉(zhuǎn)換成long型的區(qū)別,需要的朋友可以參考下

C語言strtol()函數(shù):將字符串轉(zhuǎn)換成long(長整型數(shù))
頭文件:

#include <stdlib.h>

strtol() 函數(shù)用來將字符串轉(zhuǎn)換為長整型數(shù)(long),其原型為:

long int strtol (const char* str, char** endptr, int base);

【參數(shù)說明】str 為要轉(zhuǎn)換的字符串,endstr 為第一個不能轉(zhuǎn)換的字符的指針,base 為字符串 str 所采用的進制。

【函數(shù)說明】strtol() 會將參數(shù) str 字符串根據(jù)參數(shù) base 來轉(zhuǎn)換成長整型數(shù)(long)。參數(shù) base 范圍從2 至36,或0。參數(shù)base 代表 str 采用的進制方式,如base 值為10 則采用10 進制,若base 值為16 則采用16 進制等。

strtol() 會掃描參數(shù) str 字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數(shù)來檢測),直到遇上數(shù)字或正負符號才開始做轉(zhuǎn)換,再遇到非數(shù)字或字符串結(jié)束時('\0')結(jié)束轉(zhuǎn)換,并將結(jié)果返回。

兩點注意:

  1. 當 base 的值為 0 時,默認采用 10 進制轉(zhuǎn)換,但如果遇到 '0x' / '0X' 前置字符則會使用 16 進制轉(zhuǎn)換,遇到 '0' 前置字符則會使用 8 進制轉(zhuǎn)換。
  2. 若endptr 不為NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數(shù)無效,或不使用該參數(shù)。

【返回值】返回轉(zhuǎn)換后的長整型數(shù);如果不能轉(zhuǎn)換或者 str 為空字符串,那么返回 0(0L);如果轉(zhuǎn)換得到的值超出 long int 所能表示的范圍,函數(shù)將返回 LONG_MAX 或 LONG_MIN(在 limits.h 頭文件中定義),并將 errno 的值設(shè)置為 ERANGE。

【示例】將字符串轉(zhuǎn)換成10進制。

#include <stdio.h>
#include <stdlib.h>
int main ()
{
  char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";
  char * pEnd;
  long int li1, li2, li3, li4;
  li1 = strtol (szNumbers,&pEnd,10);
  li2 = strtol (pEnd,&pEnd,16);
  li3 = strtol (pEnd,&pEnd,2);
  li4 = strtol (pEnd,NULL,0);
  printf ("轉(zhuǎn)換成10進制: %ld、%ld、%ld、%ld\n", li1, li2, li3, li4);
  system("pause");
  return 0;
}

執(zhí)行結(jié)果:
轉(zhuǎn)換成10進制:

2001、6340800、-3624224、7340031

C語言strtoul()函數(shù):將字符串轉(zhuǎn)換成unsigned long(無符號長整型數(shù))
頭文件:

#include <stdlib.h>

strtoul() 函數(shù)源自于“string to unsigned long”,用來將字符串轉(zhuǎn)換成無符號長整型數(shù)(unsigned long),其原型為:

  unsigned long strtoul (const char* str, char** endptr, int base);

【參數(shù)說明】str 為要轉(zhuǎn)換的字符串,endstr 為第一個不能轉(zhuǎn)換的字符的指針,base 為字符串 str 所采用的進制。

【函數(shù)說明】strtoul() 會將參數(shù) str 字符串根據(jù)參數(shù) base 來轉(zhuǎn)換成無符號的長整型數(shù)(unsigned long)。參數(shù) base 范圍從2 至36,或0。參數(shù) base 代表 str 采用的進制方式,如 base 值為10 則采用10 進制,若 base 值為16 則采用16 進制數(shù)等。

strtoul() 會掃描參數(shù) str 字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數(shù)來檢測),直到遇上數(shù)字或正負符號才開始做轉(zhuǎn)換,再遇到非數(shù)字或字符串結(jié)束時('\0')結(jié)束轉(zhuǎn)換,并將結(jié)果返回。

兩點注意:

  1. 當 base 的值為 0 時,默認采用 10 進制轉(zhuǎn)換,但如果遇到 '0x' / '0X' 前置字符則會使用 16 進制轉(zhuǎn)換,遇到 '0' 前置字符則會使用 8 進制轉(zhuǎn)換。
  2. 若 endptr 不為NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數(shù)無效,或不使用該參數(shù)。本文最后的范例沒有展示 endptr 參數(shù)的使用,你可以參考 strtol() 函數(shù)的范例來更加直觀地了解 endptr 參數(shù)。

【返回值】返回轉(zhuǎn)換后的無符號長整型數(shù);如果不能轉(zhuǎn)換或者 str 為空字符串,那么返回 0;如果轉(zhuǎn)換得到的值超出unsigned long int 所能表示的范圍,函數(shù)將返回 ULONG_MAX(在 limits.h 頭文件中定義),并將 errno 的值設(shè)置為 ERANGE。

溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉(zhuǎn)換為數(shù)字的函數(shù),大家可以對比學(xué)習(xí)。另外在 C99 / C++11 規(guī)范中又新增了5個函數(shù),分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學(xué)習(xí)。

范例:將輸入的字符串轉(zhuǎn)換為無符號長整型。

#include <stdio.h>
#include <stdlib.h>
int main ()
{
  char buffer [256];
  unsigned long ul;
  printf ("Enter an unsigned number: ");
  fgets (buffer, 256, stdin);
  ul = strtoul (buffer, NULL, 0);
  printf ("Value entered: %lu.\n", ul);
  system("pause");
  return 0;
}

運行結(jié)果:

Enter an unsigned number: 017cyuyan
Value entered: 15.

由于 base 參數(shù)被設(shè)置為 0 并且字符串“017cyuyan”以“0”開頭,所以采用 8 進制轉(zhuǎn)換。

相關(guān)文章

  • C++ STL入門教程(3) deque雙向隊列使用方法

    C++ STL入門教程(3) deque雙向隊列使用方法

    這篇文章主要為大家詳細介紹了C++ STL入門教程第三篇,deque雙向隊列的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C及C++中typedef的簡單使用介紹

    C及C++中typedef的簡單使用介紹

    C/C++中關(guān)鍵字typedef的理解不是多透徹,今天小編抽空給大家分享下C及C++中typedef的簡單使用介紹,需要的朋友可以參考下
    2016-10-10
  • C++容器適配與棧的實現(xiàn)及dequeque和優(yōu)先級詳解

    C++容器適配與棧的實現(xiàn)及dequeque和優(yōu)先級詳解

    這篇文章主要介紹了C++容器適配與棧的實現(xiàn)及dequeque和優(yōu)先級,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • memset函數(shù)的使用分析

    memset函數(shù)的使用分析

    本篇文章是對memset函數(shù)的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Matlab繪制花里胡哨的山脊圖

    Matlab繪制花里胡哨的山脊圖

    這篇文章主要介紹了如何利用Matlab實現(xiàn)繪制一些花里胡哨的山脊圖,文中的示例代碼講解詳細,對我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下
    2023-02-02
  • C++數(shù)據(jù)結(jié)構(gòu)與算法之雙緩存隊列實現(xiàn)方法詳解

    C++數(shù)據(jù)結(jié)構(gòu)與算法之雙緩存隊列實現(xiàn)方法詳解

    這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)與算法之雙緩存隊列實現(xiàn)方法,結(jié)合實例形式分析了雙緩存隊列的原理、實現(xiàn)方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08
  • C++繼承的定義與注意事項

    C++繼承的定義與注意事項

    這篇文章主要給大家介紹了關(guān)于C++繼承的定義與注意事項的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C++中的內(nèi)存對齊實例詳解

    C++中的內(nèi)存對齊實例詳解

    這篇文章主要介紹了C++中的內(nèi)存對齊實例詳解的相關(guān)資料,這里不僅提供實現(xiàn)方法及代碼還提供了手工制作圖,來幫助到大家理解這部分知識,需要的朋友可以參考下
    2017-07-07
  • 數(shù)據(jù)結(jié)構(gòu)之數(shù)組Array實例詳解

    數(shù)據(jù)結(jié)構(gòu)之數(shù)組Array實例詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之數(shù)組Array實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++ 17標準正式發(fā)布! 更簡單地編寫和維護代碼

    C++ 17標準正式發(fā)布! 更簡單地編寫和維護代碼

    C++ 17 標準正式發(fā)布:終于能更簡單地編寫和維護代碼了!本文為大家介紹了C ++ 17 主要特性,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評論

清涧县| 开阳县| 浪卡子县| 慈溪市| 承德县| 孝义市| 西华县| 图们市| 资兴市| 田东县| 峨眉山市| 芦山县| 安宁市| 大冶市| 蕲春县| 沅陵县| 新丰县| 满城县| 汉阴县| 和硕县| 台东县| 磐石市| 山阳县| 蓬莱市| 林州市| 页游| 阳原县| 德令哈市| 中江县| 丽水市| 湟中县| 嘉兴市| 肃宁县| 北流市| 乌海市| 梁山县| 庆城县| 交口县| 古田县| 微博| 昔阳县|