C编程从入门到实践
上QQ阅读APP看书,第一时间看更新

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语言中各字符串函数的使用方法,并通过具体实例来加深理解。