如何将一个字符串转换为进制可选的整数(strtol)&(结合Linux系统函数chmod写)

C 库函数 

long int strtol(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。

函数原型

下面是 strtol() 函数的原型:

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

参数

  • str          要转换为长整数的字符串。
  • endptr   对类型为 char* 的对象的引用,中数值后的下其值由函数设置为 str 一个字符。
  • base      基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。

 

   可以被转换的合法字符依据base而定,举例来说,当base为2时,合法字符为‘0’,‘1’;base为8时,
合法字符为‘0’,‘1’,……‘7’;base为10时,合法字符为‘0’,‘1’,……‘9’;base 为16时,合法字符
为‘0’,‘1’,……‘9’,‘a’,……‘f’;base为24时,合法字符为‘0’,……‘9’,‘a’,……‘n’,base为36时
合法字符为‘0’,……‘9’,‘a’,……‘z’;等等。其中,不区分大小写,比如,‘A’和‘a’会都会被转化为10。
当字符合法时,‘0’,……‘9’依次被转换为十进制的0~9,‘a’,……‘z’一次北转换为十进制的10~35。
strtol()函数检测到第一个非法字符时,立即停止检测,其后的所有字符都会被当作非法字符处理。
合法字符串会被转换为long int, 作为函数的返回值。非法字符串,即从第一个非法字符的地址,
被赋给*endptr。**endptr是个双重指针,即指针的指针。strtol()函数就是通过它改变*endptr
的值,即把第一个非法字符的地址传给endptr。

多数情况下,endptr设置为NULL, 即不返回非法字符串。

返回值

该函数返回转换后的长整数,如果没有执行有效的转换,则返回一个零值。

实例

下面的实例演示了 strtol() 函数的用法。
实现了Linux系统命令chmod

 int main(int argc,char *argv[]) 

{ 

     if(argc<3)

    {

      printf("Usage ./a.out filename privilege!");

      exit(1);

    }

     long Privilege = strtol(argv[2],755);

     int ret = chmod(argv[1],755);

     if(-1 == ret)

    {

       perror("chmod");

       exit(1);

     }

return(0);

}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值