Convert a String to a Float in C

In C, we can convert a string to a float using functions such as atof(), strtof(), and sscanf().

In this tutorial, we will explore multiple methods to convert a string to a float with clear explanations and examples.


Examples of Converting a String to a Float in C

1. Using atof() to Convert a String to a Float

In this example, we use the atof() function from stdlib.h to convert a string to a float.

main.c

</>
Copy
#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "3.14159";
    float num;

    // Convert string to float using atof
    num = atof(str);

    printf("Converted float value: %f\n", num);
    return 0;
}

Explanation:

  1. We declare a string str[] = "3.14159" containing a numerical value in text format.
  2. The function atof(str) converts the string to a float and stores it in num.
  3. We use printf() to display the converted float value.

Output:

Converted float value: 3.141590

2. Using strtof() for Safer Conversion from String to Float

Here, we use strtof(), which allows error handling by checking if the entire string was successfully converted.

main.c

</>
Copy
#include <stdio.h>
#include <stdlib.h>

int main() {
    char str[] = "45.67xyz";
    char *endPtr;
    float num;

    // Convert string to float using strtof
    num = strtof(str, &endPtr);

    if (*endPtr == '\0') {
        printf("Converted float value: %f\n", num);
    } else {
        printf("Partial conversion occurred: %f (remaining: %s)\n", num, endPtr);
    }

    return 0;
}

Explanation:

  1. We declare a string str[] = "45.67xyz", which contains extra non-numeric characters.
  2. The function strtof(str, &endPtr) converts the numeric part of the string to a float.
  3. The endPtr pointer indicates where the conversion stopped.
  4. If *endPtr is '\0', the entire string was converted; otherwise, extra characters remain.

Output:

Partial conversion occurred: 45.669998 (remaining: xyz)

3. Using sscanf() to Extract a Float

Here, we use sscanf() to extract a float from a string efficiently.

main.c

</>
Copy
#include <stdio.h>

int main() {
    char str[] = "123.45";
    float num;

    // Convert string to float using sscanf
    if (sscanf(str, "%f", &num) == 1) {
        printf("Converted float value: %f\n", num);
    } else {
        printf("Conversion failed!\n");
    }

    return 0;
}

Explanation:

  1. We declare a string str[] = "123.45" containing a floating-point number.
  2. The function sscanf(str, "%f", &num) extracts the float value.
  3. If sscanf() returns 1, the conversion succeeded.
  4. We use printf() to display the converted float value.

Output:

Converted float value: 123.449997

Conclusion

In this tutorial, we explored multiple ways to convert a string to a float in C:

  1. Using atof(): Simple but lacks error handling.
  2. Using strtof(): More robust as it provides error detection.
  3. Using sscanf(): Useful for extracting floats from formatted input.