Namespaces
Variants

atof

From cppreference.net
< c ‎ | string ‎ | byte
Definiert in Header <stdlib.h>
double atof ( const char * str ) ;

Interpretiert einen Gleitkommawert in der Byte-Zeichenkette, auf die str zeigt.

Die Funktion verwirft alle Leerzeichen (wie durch isspace bestimmt), bis das erste Nicht-Leerzeichen gefunden wird. Dann nimmt sie so viele Zeichen wie möglich, um eine gültige Gleitkommadarstellung zu bilden, und wandelt diese in einen Gleitkommawert um. Der gültige Gleitkommawert kann einer der folgenden sein:

  • Dezimale Gleitkomma-Ausdrücke. Es besteht aus den folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • Nichtleere Folge von Dezimalziffern, optional mit Dezimaltrennzeichen (wie durch die aktuelle C- Locale bestimmt) (definiert die Signifikande)
  • (optional) e oder E gefolgt von optionalem Minus- oder Pluszeichen und nichtleerer Folge von Dezimalziffern (definiert den Exponenten zur Basis 10 )
  • hexadezimale Gleitkomma-Ausdrücke. Besteht aus folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • 0x oder 0X
  • nicht-leere Folge hexadezimaler Ziffern, optional mit Dezimaltrennzeichen (gemäß der aktuellen C- Locale ) (definiert die Signifikande)
  • (optional) p oder P gefolgt von optionalem Minus- oder Pluszeichen und nicht-leerer Folge dezimaler Ziffern (definiert den Exponenten zur Basis 2 )
  • Unendlichkeits-Ausdrücke. Besteht aus folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • INF oder INFINITY Groß-/Kleinschreibung wird ignoriert
  • Not-a-Number-Ausdrücke. Besteht aus folgenden Teilen:
  • (optional) Plus- oder Minuszeichen
  • NAN oder NAN( char_sequence  ) Groß-/Kleinschreibung des NAN Teils wird ignoriert. char_sequence darf nur Ziffern, lateinische Buchstaben und Unterstriche enthalten. Das Ergebnis ist ein quiet NaN Gleitkommawert.
(seit C99)
  • jeder andere Ausdruck, der von der aktuell installierten C locale akzeptiert werden kann.

Inhaltsverzeichnis

Parameter

str - Zeiger auf die nullterminierte Byte-Zeichenkette, die interpretiert werden soll

Rückgabewert

double Wert entsprechend dem Inhalt von str bei Erfolg. Falls der konvertierte Wert außerhalb des Bereichs des Rückgabetyps liegt, ist der Rückgabewert undefiniert. Falls keine Konvertierung durchgeführt werden kann, wird 0.0 zurückgegeben.

Hinweise

Der Name steht für „ASCII to float“.

Beispiel

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("%g\n", atof("  -0.0000000123junk"));
    printf("%g\n", atof("0.012"));
    printf("%g\n", atof("15e16"));
    printf("%g\n", atof("-0x1afp-2"));
    printf("%g\n", atof("inF"));
    printf("%g\n", atof("Nan"));
    printf("%g\n", atof("1.0e+309"));   // UB: außerhalb des Bereichs von double
    printf("%g\n", atof("0.0"));
    printf("%g\n", atof("junk"));       // keine Konvertierung kann durchgeführt werden
}

Mögliche Ausgabe:

-1.23e-08
0.012
1.5e+17
-107.75
inf
nan
inf
0
0

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.22.1.1 Die atof-Funktion (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.22.1.1 Die atof-Funktion (S.: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.22.1.1 Die atof-Funktion (S: 341)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.20.1.1 Die atof-Funktion (S: 307)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.10.1.1 Die atof-Funktion

Siehe auch

wandelt eine Byte-Zeichenkette in einen Gleitkommawert um
(Funktion)