Namensräume
Varianten
Aktionen

atof

Von cppreference.com
< c‎ | string‎ | byte
Definiert im Header <stdlib.h>
double atof( const char* str );

Interpretiert einen Fließkommawert in einer Byte-Zeichenkette, auf die von str gezeigt wird.

Die Funktion verwirft alle Whitespace-Zeichen (wie von isspace bestimmt), bis das erste Nicht-Whitespace-Zeichen gefunden wird. Dann nimmt sie so viele Zeichen wie möglich, um eine gültige Fließkommadarstellung zu bilden, und konvertiert sie in einen Fließkommawert. Der gültige Fließkommawert kann einer der folgenden sein:

  • Dezimale Gleitkomma-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • nicht-leere Folge von Dezimalziffern, die optional ein Dezimalpunktzeichen enthält (wie von der aktuellen C Locale bestimmt) (definiert den Signifikand)
  • (optional) e oder E gefolgt von einem optionalen Minus- oder Pluszeichen und einer nichtleeren Sequenz von Dezimalziffern (definiert den Exponenten zur Basis 10)
  • Hexadezimale Gleitkomma-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • 0x oder 0X
  • nicht-leere Folge von Hexadezimalziffern, die optional ein Dezimalpunktzeichen enthält (wie von der aktuellen C Locale bestimmt) (definiert den Signifikand)
  • (optional) p oder P gefolgt von einem optionalen Minus- oder Pluszeichen und einer nichtleeren Sequenz von Dezimalziffern (definiert den Exponenten zur Basis 2)
  • Unendlichkeits-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • INF oder INFINITY (Groß-/Kleinschreibung wird ignoriert)
  • Nicht-eine-Zahl-Ausdrücke. Sie bestehen aus den folgenden Teilen:
  • (optional) Vorzeichen (+ oder -)
  • NAN oder NAN(char_sequence ) (Groß-/Kleinschreibung des Teils NAN 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.

Inhalt

[edit] Parameter

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

[edit] Rückgabewert

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

[edit] Hinweise

Der Name steht für "ASCII zu Float".

[edit] 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: out of range of double
    printf("%g\n", atof("0.0"));
    printf("%g\n", atof("junk"));       // no conversion can be performed
}

Mögliche Ausgabe

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

[edit] Referenzen

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

[edit] Siehe auch

konvertiert einen Byte-String in einen Gleitkommawert
(Funktion) [bearbeiten]