欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

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

#include <stdlib.h>

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

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

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

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

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

兩點(diǎn)注意:

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

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

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

#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進(jìn)制: %ld、%ld、%ld、%ld\n", li1, li2, li3, li4);
  system("pause");
  return 0;
}

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

2001、6340800、-3624224、7340031

C語(yǔ)言strtoul()函數(shù):將字符串轉(zhuǎn)換成unsigned long(無(wú)符號(hào)長(zhǎng)整型數(shù))
頭文件:

#include <stdlib.h>

strtoul() 函數(shù)源自于“string to unsigned long”,用來(lái)將字符串轉(zhuǎn)換成無(wú)符號(hào)長(zhǎng)整型數(shù)(unsigned long),其原型為:

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

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

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

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

兩點(diǎn)注意:

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

【返回值】返回轉(zhuǎn)換后的無(wú)符號(hào)長(zhǎng)整型數(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個(gè)可以將字符串轉(zhuǎn)換為數(shù)字的函數(shù),大家可以對(duì)比學(xué)習(xí)。另外在 C99 / C++11 規(guī)范中又新增了5個(gè)函數(shù),分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請(qǐng)大家自行學(xué)習(xí)。

范例:將輸入的字符串轉(zhuǎn)換為無(wú)符號(hào)長(zhǎng)整型。

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

運(yùn)行結(jié)果:

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

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

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有