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()完全相同,你得自编译程序文档中益询问这三独函数的有关细节。