C语言C语言中以字符串转换为数字之法门

C语言提供了几单正经库函数,可以以字符串转换为随意档次(整型、长整型、浮点型等)的数字。以下是用atoi()函数将字符串转换为整数的一个事例:

# include <stdio. h>
# include <stdlib. h>
void main (void) ;
void main (void)
{
    int num;
    char * str = “100”;
    num = atoi(str);
    printf(“The string ‘str’ is %s and the number ‘num’ is %d. \n”,
                   str, num);
}
  
atoi()函数只发一个参数,即只要更换为数字之字符串。atoi()函数的回值就是是易所得之整型值。   

下列函数可以将字符串转换为数字:

    函数名    作  用

 atof()     将字符串转换为对精度浮点型值
 atoi()     将字符串转换为整型值
 atol()     将字符串转换为长整型值
 strtod()  
将字符串转换为对精度浮点型值,并告不可知被转移的具备盈余数字
 strtol()   将字符串转换为长整值,并告未能够吃撤换的装有盈余数字
 strtoul() 
将字符串转换为无符号长整型值,并告知未克叫转换的保有盈余数字
————————————————————————  
  
以字符串转换为数字时可能会见招致溢起,如果你使用的凡strtoul()这样的函数,你就算能够检查这种溢起错误。请圈下例:  
# include <stdio. h>
# include <stdlib. h>
# include <limits. h>
void main(void);
void main (void)
{
    char* str = “1234567891011121314151617181920” ;
    unsigned long num;
    char * leftover;
    num = strtoul(str, &leftover, 10);
    printf(“Original string: %s\n”,str);
    printf(“Converted number: %1u\n” , num);
    printf(“Leftover characters: %s\n” , leftover);
}

于上例中,要换的字符串太丰富,超出了无符号长整型值的取值范围,因此,strtoul()函数将回到ULONG_MAX(4294967295),并而。char
leftover指向字符串中导致溢起之那片字符;同时,strtoul()函数还以全局变量errno赋值为ERANGE,以通知函数的调用者发生了溢起荒唐。函数strtod()和strtol()处理溢起荒谬的方法和函数strtoul()完全相同,你得自编译程序文档中益询问这三独函数的有关细节。