Az strtod (a string to d ouble , "string to double" rövidítése ) egy C nyelvi függvény, amely egy karakterlánc karaktert dupla pontosságú lebegőpontos számmá alakít át . A függvény definíciója így néz ki:
double strtod ( const char * str, char ** endptr );[egy]A függvény strtodelemzi a C karakterláncot str, amelynek tartalmát lebegőpontos számként jeleníti meg, és visszaadja az értékét double. Ha endptr nem null mutató, akkor a függvény beállítja azt az értéket, amelyre mutató mutat endptr, egyenlő a szám utáni első karakterrel.
Először is, a függvény eldob minden szóközt, amíg meg nem találja az első nem szóköz karaktert. Ezután az adott karaktertől kezdve beolvassa az összes olyan karaktert, amely megfelel a lebegőpontos literális szintaxisnak, és numerikus értékként értelmezi őket. A karakterlánc utolsó érvényes karaktere utáni fennmaradó részére mutató mutatót tárol az objektumban, amelyre endptr.
A lebegőpontos számok érvényes sorozata strtodolyan sorozat, amely megfelel a következő feltételeknek:
Ha a nem szóköz karakterek első sorozata strnem tartalmaz érvényes lebegőpontos számot a fent leírtak szerint, vagy ha ilyen érvényes sorozat nem létezik, mert például vagy strüres, vagy csak szóköz karaktereket tartalmaz, akkor nem történik átalakítás. teljesített.
str
endptr
Ha sikeres, a függvény az átalakított lebegőpontos számot dupla pontosságú számként adja vissza (azaz . típusú double). Ha érvényes konverzió nem hajtható végre, akkor nulla (0.0) kerül visszaadásra. Ha a helyes érték a reprezentálható értékek tartományán kívül esik, akkor a rendszer pozitív vagy negatív értéket HUGE_VAL("hatalmas érték", nagy szám) ad vissza, és a globális változóhoz errnoegy értéket rendel ERANGE(a határokon kívül). Ha a helyes érték túl kicsi, akkor nullát ad vissza, és errnoaz érték hozzárendelődik ERANGE.
A funkció a szabványos ISO/IEC C könyvtárstrtod fejlécfájljában található . stdlib.h