8.4.7 将字符串转换成数值的函数
在C语言编程过程中,有时需要将由字符串表示的数字转换成数值变量。例如,将字符串“123”转换为一个值为“123”的数字。有如下3个函数可实现上述功能。
1.函数atoi
函数atoi的功能是将字符串转换为整型值,具体使用格式如下所示。
atoi (字符串)
其中,“字符串”是字符串常量或已存放字符串的字符数组名。函数atoi会扫描字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始进行转换,而遇到非数字或字符串结束标志“\0”时才结束转换,并将结果返回。其返回值是转换后的整型数。
2.函数atol
函数atol的功能是将字符串转换为长型值,具体使用格式如下所示。
atol (字符串)
其中,“字符串”是字符串常量或已存放字符串的字符数组名。函数atol会扫描参数“字符串”,跳过前面的空格字符,直到遇上数字或正负符号才开始进行转换,而遇到非数字或字符串结束标志时才结束转换,并将结果返回。例如在下面代码中x的值为1024L。
x = atol( "1024.0001" );
3.函数atof
函数atof的功能是将字符串转换为双精度型值,具体使用格式如下所示。
atof(字符串)
其中,“字符串”的开头可以包含空白、符号(+和-)、数学数字(0~9)、小数和指示符(E或e)。如果第1个字符是不可转换的,则atof返回0。
实例8-11
将用户输入的字符串转换为数值类型的值
源码路径daima\8\8-11
本实例的实现文件为“transefer.c”,具体实现代码如下。
#include "stdafx.h" #include "string.h" #include "stdlib.h" int main(void){ char str[80]; //定义一个字符数组 while(1) { printf("input the string to convert: "); gets(str); //输入字符串 if(strlen(str)==0)break; //当遇到空字符 串时退出循环 //将字符串转换为整型值 printf("atoi(%s) returns %d\n", str, atoi(str)); printf("atol(%s) returns %ld\n", str, atol(str)); //将字符串转换为长型值 printf("atof(%s) returns %f\n", str, atof(str)); //将字符串转换为浮点数 } }
拓展范例及视频二维码
范例8-11-01:对字符串进行定位
源码路径:演练范例\8-11-01\
范例8-11-02:演示子串的插入
源码路径:演练范例\8-11-02\
程序运行后的效果如图8-11所示。
图8-11 执行效果
实际上,函数atof、atol、atrtod、strtol和strtoul的功能都是类似的,具体使用方法都相同。读者可以参阅光盘中赠送的“C字符串函数”资料,学习C语言中各字符串函数的使用方法,并通过具体实例来加深理解。