Linux中strtoul函数

本文通过示例展示了Linux中strtoul函数的使用,包括不同基数的转换,并指出当字符串以非数字开始时,返回值为0。同时,介绍了尾指针如何指示字符串中有效数字的结束位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其函数原型如下:
unsigned long strtoul(const char *nptr,char **endptr,int base )
参数1:字符串起始地址
参数2:返回字符串有效数字的结束地址,这也是为什么要用二级指针的原因。
参数3:转换基数。当base=0,自动判断字符串的类型,并按10进制输出,例如"0xa",就会把字符串当做16进制处理,输出的为10。更多的下面详细阐述。

贴上函数原型

  1. include "stdafx.h"  
  2. #include   <iostream>   
  3. #include <stdlib.h>  
  4. using namespace std;  
  5. int _tmain(int argc, _TCHAR* argv[])  
  6. {  
  7.     unsigned   int   num1,num2,num3 ,num4,num5,num6   ;   
  8.     char   *stop_at  =NULL ;   
  9.     char   temp1[16]   =   "0xa"   ;   
  10.     char   temp2[16]   =   "011"   ;   
  11.     char   temp3[16]   =   "123"   ;   
  12.     char   temp4[16]   =   "0xa"   ;   
  13.     char   temp5[16]   =   "11"   ;   
  14.     char   temp6[16]   =   "Z"   ;   
  15.     //if base==0  
  16.     num1=strtol(temp1,&stop_at,0);   
  17.     num2=strtol(temp2,&stop_at,0);   
  18.     num3=strtol(temp3,&stop_at,0);   
  19.     //if base>1 && base <=32  
  20.     num4=strtol(temp4,&stop_at,16);   
  21.     num5=strtol(temp5,&stop_at,2);   
  22.     num6=strtol(temp6,&stop_at,36);   
  23.   
  24.     cout<<num1<<endl;  
  25.         cout<<num2<<endl;  
  26.     cout<<num3<<endl;  
  27.     cout<<num4<<endl;  
  28.     cout<<num5<<endl;  
  29.     cout<<num6<<endl;  
  30.     return 0;  
  31. }  
测试结果:
10
9
123
10
3
35

注意:1  如果字符串以非数字开始,返回值0。
    2 基数表示把字符串里的数字当做base进制处理,输出的结果把base进制转换成了10进制。

    3  base=0时,会自动对字符串进行处理,例如以0x开始,其字符串看做是16进制数;以0开始,其字符串看做是8进制数。
    4  如果base=n(1<n<=36),为什么可取到36,很简单,10个数字+26个字母=36。
    5  如果base=1时呢? 经测试出现调试错误,也很简单,你听过1进制数吗?!。

    6  尾指针指向字符串有效数字的结束地址。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值