Ich muss eine Zeichenfolge in einen Float konvertieren. Wenn der String keine Zahl mag ich zurückkehren 0.Warum gibt die Funktion atof() nicht 0 zurück, wenn ich eine Zeichenfolge mit ungültigen Zeichen nach einer Zahl übergebe?
ich versucht habe, zu testen, ob die atof()
Funktion mit dem folgenden Code für diese funktionieren würde:
printf("%f", atof("1a"));
Von meinem Verständnis von atof, die Wert, der zurückgegeben wird, wenn atof nicht konvertieren kann, ist 0, und dennoch druckt diese Zeile 1.0
.
Warum passiert das? Durch die Dokumentation habe ich verstanden, dass atof 0 zurückgeben soll, wenn die Eingabe keine Zahl ist.
Sie möglicherweise besser dran mit: 'Strtod()'. Beachten Sie, dass 'atof()' tatsächlich ein 'double' zurückgibt, kein' float'. Hinweis: Die Funktion 'atof()' sieht die '1' als gültige Zahl und gibt das Ergebnis der Konvertierung zurück: 1.000000. Es gibt keinen Grund für die Rückgabe von 0.000000, da es eine gültige Zahl zum Konvertieren gibt. – user3629249