标题:strtol()函数
只看楼主
kuaisha
Rank: 2
等 级:论坛游民
帖 子:120
专家分:30
注 册:2016-8-3
结帖率:100%
 问题点数:0 回复次数:3 
strtol()函数
程序代码:
#include<stdio.h>
#include<stdlib.h>

int main()
{
    char number[30];
    char *end;
    long value;
    
    
    puts("输入一个数字(按Enter退出):");
    while(gets(number) && number[0] !='\0')
    {
        value = strtol(number,&end,10);//这一行输入a是为什么value为0?
        printf("值:%ld,停在%s(%d)\n",value,end,*end);
        value = strtol(number,&end,16);
        printf("值%ld,停在%s(%d)\n",value,end,*end);
        puts("下一个数字:");
    } 
    puts("再见!\n");
    
    return 0;
} 

搜索更多相关主题的帖子: 函数 number end value puts 
2017-12-23 23:41
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
因为
2017-12-24 00:45
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
C 库函数 - strtol()

C 标准库 - <stdlib.h> C 标准库 - <stdlib.h>


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。

返回值

该函数返回转换后的长整数,如果没有执行有效的转换,则返回一个零值。
2017-12-24 00:48
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:0 
这个a不是10进制里的合法值,但你在16进制里面是合法的值。所以10进制这里就停止到a,你前面没有值所以输出0.
2017-12-24 00:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483665-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023319 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved