C库 - atof() 函数



C 的stdlibatof() 函数用于将字符串转换为浮点数,并将转换后的浮点数表示为其对应的双精度值。

浮点数是一种包含小数部分的整数类型,使用小数点表示。例如,像 10.05 和 5.5005 这样的数字是浮点数。

语法

以下是 atof() 函数的 C 库语法:

double atof(const char *str)

参数

此函数接受单个参数:

  • str − 它是一个指向以 null 结尾的字符串的指针,表示一个浮点数。

返回值

此函数返回一个与双精度表示相对应的浮点数。如果输入字符串不是有效的浮点数,则返回 0.0。

示例 1

以下是演示 atof() 函数用法的基本 C 示例。

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
   double res;
   char *str; 
   str = "-1509.10E-10";
   res = atof(str); 
   printf("res = %.4e\n", res);
}

输出

以下是输出:

res = -1.5091e-007

示例 2

在这个例子中,我们连接了两个字符串,然后使用 atof() 函数将结果字符串转换为浮点数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
	
    // Define two strings to concatenate
    char str1[] = "123.456";
    char str2[] = "789";
    
    //calculate the length of string first + second
    int length = strlen(str1) + strlen(str2) + 1;

    // Allocate memory for the concatenated string
    char *concatenated = malloc(length);

    // check memory allocation if null return 1.
    if(concatenated == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }

    // Concatenate str1 and str2
    strcpy(concatenated, str1);
    strcat(concatenated, str2);

    // Convert concatenated string into a floating point number.
    // use the atof() function
    double number = atof(concatenated);

    printf("The concatenated string is: %s\n", concatenated);
    printf("The floating point number is: %f\n", number);

    // at the last free the alocated memory
    free(concatenated);
    return 0;
}

输出

以下是输出:

The concatenated string is: 123.456789
The floating point number is: 123.456789

示例 3

以下是另一个示例,我们在这里将数字字符串和字符字符串都转换为浮点数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main () {
   float res;
   char str[20];
   
   //define a string   
   strcpy(str, "151413.10e");
   
   //convert into float
   //use atof() function
   res = atof(str);
   
   printf("String value = %s\n" , str);
   printf("Float value = %f\n", res);

   strcpy(str, "tutorialspoint.com");
   
   //use atof() function
   res = atof(str);
   printf("String value = %s\n", str);
   printf("Float value = %f\n", res);

   return(0);
}

输出

以下是输出:

String value = 151413.10e
Float value = 151413.093750
String value = tutorialspoint.com
Float value = 0.000000
广告