strtol()函数

/************************************************************
* c primer plus P315 11.29 ---尝试使用strtol()函数
*************************************************************/
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char number[30];
    char *end;
    long value;
   
    puts("Enter a number(empty line to quit):)");
    while(gets(number) && number[0] != '/0')
    {
        value = strtol(number, &end, 10);       //end是个地址,&end就是地址的地址
        printf("value: %ld, stopped at %s(%d)/n", value, end, *end);
        value = strtol(number, &end, 16);
        printf("value: %ld, stopped at %s(%d)/n", value, end, *end);
        puts("next number: ");
    }
    puts("Bye!");
   
    getchar(); 
    return 0;
}

strtol()的函数原型:long strtol(const char *nptr, char **endptr, int base); 第一个参数是要进行操作的字符串,第二个指针的指针,是字符串中指向非数字部分的第一个字符的指针的地址,第三个指出进制,(10就是转换成十进制的,16就是转换成16进制的.10就是看做十进制的,16就是看做十六进制的。这个函数得到的数都是十进制的。参数base范围从2至36,或0。当base值为0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’前置字符而不是’0x’的时候会使用8进制做转换。

 

一个输出示例:

Enter a number(empty line to quit):

10

value: 10, stopped at  (0)     //将“10”看做十进制的,得到10

value: 16, stopped at  (0)     //将“10”看做十六进制的,得到十进制的数16

Next Number:

10atm

value: 10, stopped at atom(97)     //读完10,下个字符a就不能读了

value: 266, stopped at tom(116) //读完10a,下个t不能读了, 10a转换成十进制的数266

Next Number:

 

Bye!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值