激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 淺析C語言中strtol()函數與strtoul()函數的用法

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

2021-03-07 14:30C語言教程網 C/C++

這篇文章主要介紹了淺析C語言中strtol()函數與strtoul()函數的用法,注意其將字符串轉換成long型的區別,需要的朋友可以參考下

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

?
1
#include <stdlib.h>

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

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

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

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

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

兩點注意:

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

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

【示例】將字符串轉換成10進制。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#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 ("轉換成10進制: %ld、%ld、%ld、%ld\n", li1, li2, li3, li4);
  system("pause");
  return 0;
}

執行結果:
轉換成10進制:

?
1
2001、6340800、-3624224、7340031

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

?
1
#include <stdlib.h>

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

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

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

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

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

兩點注意:

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

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

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

范例:將輸入的字符串轉換為無符號長整型。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#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;
}

運行結果:

?
1
2
Enter an unsigned number: 017cyuyan
Value entered: 15.

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

延伸 · 閱讀

精彩推薦
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
主站蜘蛛池模板: 91 久久 | 中文字幕在线观看免费视频 | 日韩毛片网 | 激情小说另类 | 久久国产精品久久久久久电车 | 欧洲精品久久 | 国产精品男女 | 久久亚洲线观看视频 | 92自拍视频 | 欧美亚洲国产成人综合在线 | 午夜精品久久久久久久96蜜桃 | av免费在线网| 亚洲精品有限 | 中国成人在线视频 | 露脸各种姿势啪啪的清纯美女 | 久久久久久久久久久国产精品 | 香蕉成人在线观看 | 久久人人人 | 无码专区aaaaaa免费视频 | 久久午夜免费视频 | 久久国产精品久久精品国产演员表 | 免费在线一区二区 | 色视频在线观看 | 久久久久久久久浪潮精品 | 草逼一区 | 中文字幕精品在线播放 | 亚洲小视频在线观看,com | 噜噜噜在线 | 一区二区免费 | 久久噜噜噜精品国产亚洲综合 | 色播视频在线播放 | 欧美日韩免费在线观看视频 | 天天草天天爱 | 精品中文字幕在线播放 | 久久国产精品二区 | 国产羞羞视频在线观看 | 蜜桃视频日韩 | 久草免费新视频 | 国产精品视频专区 | 亚洲天堂ww | 久久精品视频6 |