Я нахожу это странным.
Хотя имеет смысл, что strtod принимает 'e' в качестве одного из символов (точнее, одного) во входной строке, я считаю, что он также принимает 'd'.
Может кто-нибудь объяснить, пожалуйста?
#include < stdio.h >
#include < stdlib.h >
int main ()
{
char *s[] = {"1a1", "1e1", "1d1", "1f1"};
char * pEnd;
double d0, d1, d2, d3;
d0 = strtod (s[0],&pEnd);
d1 = strtod (s[1],NULL);
d2 = strtod (s[2],NULL);
d3 = strtod (s[3],NULL);
printf ("::: [%f] [%f] [%f] [%f] \n", d0, d1, d2, d3);
return 0;
}