atoi() atol()atof() strtol() stroul() strtod()

来源:互联网 发布:软件周末培训班 编辑:程序博客网 时间:2024/06/05 23:52
//atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数,
///原型:int atoi(const *nptr)
///参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,
///之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
///包含在头文件stdlib.h中
///若字符串一整数开头,atoi仍然可以正常工作,在这种情况下,atoi()函数在遇到非
///整数部分之前一直转换字符,如,atoi("42regular")返回整数42,若命令行类似
///hello what,就返回0.
///*******************************************************************************
///atof()函数把一个字符串转换为double 类型的值
///atol()函数把一个字符串转换为long类型的值
///*******************************************************************************
///strtol()函数把一个字符串转换为long型值
///strtoul()函数把一个字符串转换为unsigned long型
///strtod()函数把一个字符串转换为double 类型值
///这三个还可以识别并报告字符串中非数字部分的第一个字符


/*strtol()函数原型
long strtol(const char *nptr,char **endptr,int base);
nptr是一个指向您希望转换的字符串的指针,endptr是指向标志输入数字的结束字符的指针
的地址,base是数字的基数
例程如下:*/
#include<stdio.h>
#include<stdlib.h>


int main()
{
    char number[30];
    char *end;
    long value;


    puts("Enter a number(empty to quit):");
    while(gets(number)&&number[0]!='\0')
    {
        value=strtol(number,&end,10);
        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!\n");
    return 0;
}
///strtol()函数最多可以有36进制,只用一直到'z'的字母作为数字,stroul()函数
///也是一样,但它转换的是无符号值,strtod()函数只按照十进制进行转换,因此
///它使是用两个参数
///很多实现中都用itoa()和ftoa()函数把整数和浮点数转换为字符串,但是它俩并不是
///ANSI C库里的函数,若要兼容性更好,可以用sprintf()函数
1 0
原创粉丝点击