- C Library - Home
- C Library - <assert.h>
- C Library - <complex.h>
- C Library - <ctype.h>
- C Library - <errno.h>
- C Library - <fenv.h>
- C Library - <float.h>
- C Library - <inttypes.h>
- C Library - <iso646.h>
- C Library - <limits.h>
- C Library - <locale.h>
- C Library - <math.h>
- C Library - <setjmp.h>
- C Library - <signal.h>
- C Library - <stdalign.h>
- C Library - <stdarg.h>
- C Library - <stdbool.h>
- C Library - <stddef.h>
- C Library - <stdio.h>
- C Library - <stdlib.h>
- C Library - <string.h>
- C Library - <tgmath.h>
- C Library - <time.h>
- C Library - <wctype.h>
- C Programming Resources
- C Programming - Tutorial
- C - Useful Resources
C library - strtod() function
The C stdlib library strtod() function is used to convert a string pointed to by the 'str" to a double precision floating-point number. If 'endptr' is not NULL, a pointer to the character after the last character used in the conversion is stored in the location referenced by 'endptr'.
Note: The strtod() function provides greater precision and can handle a wider range of values compared to atof() function.
Syntax
Following is the C library syntax of the strtod() function −
double strtod(const char *str, char **endptr)
Parameters
This function accepts following parameters −
-
str − It is a string to be converted into a double precision floating-point number.
-
endptr − It is a pointer to a charter pointer and used to store the pointer to the first character after the numeric value.
Return Value
This function returns the converted double-precision floating-point number. If the input string is not a valid, it returns 0.
Example 1
In this example, we are converting the string to a floating-point number and extracting the charter after numeric value using the strtod() function.
#include <stdio.h>
#include <stdlib.h>
int main () {
char str[50] = "2024.05 tutorialspoint";
char *ptr;
double res;
// convert into floating point number
res = strtod(str, &ptr);
//display the numeric part
printf("Double value: %f\n", res);
//display the string after number
printf("String after number: %s", ptr);
return(0);
}
Output
Following is the output −
Double value: 2024.050000 String after number: tutorialspoint
Example 2
Let's create another example, we concatenated two string and then convert the resulting string to a floating-point number and extracting the character after number, using the strtod() function.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
// Define two strings to concatenate
char str1[] = "2024.05 ";
char str2[] = "tutorialspoint";
char *ptr;
//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);
// use the strlen() function
double number = strtod(concatenated, &ptr);
printf("The concatenated string is: %s\n", concatenated);
printf("The double value is: %f\n", number);
printf("String after number: %s", ptr);
// at the last free the alocated memory
free(concatenated);
return 0;
}
Output
Following is the output −
The concatenated string is: 2024.05 tutorialspoint The double value is: 2024.050000 String after number: tutorialspoint
Example 3
The example below convert the character string into the double precision floating-point number, using the strtod() function.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main () {
double res;
char str[20];
char *ptr;
//define a string
strcpy(str, "tutorialspoint");
//use strtod() function
res = strtod(str, &ptr);
printf("String Value = %s\n", str);
printf("Double value = %f\n", res);
printf("Charater after number = %s", ptr);
return(0);
}
Output
Following is the output, Here we are getting double value as '0' because string value is not a valid floating point string.
String Value = tutorialspoint Double value = 0.000000 Charater after number = tutorialspoint