char Wert in einen float Wert umwandeln.
-
Ich habe ein Problem ich möchte einen char Wert in einen float Wert umwandeln, hier ein Beispiel.:
#include <stdio.h> #include <stdlib.h> int main(void) { char zahl[50] float umwandlung; printf("Zahl: "); gets(zahl); // Umwandlung umwandlung = atoi(zahl); printf("Neuer Wert: %i", umwandlung); }
Aber es kommt kein Fließkommazahl raus sondern eine lange Zahl nach hinten, z.B. 1023404432.
Kann einer mir helfen?
-
atof wäre richtige Lösung nicht atoi
Allerdings ziehe ich sttod vor
Diese Lösung wandelt eine Eingabe in eine float Zahl um. wenn der Eingabe string keine Zahl oder nach dem Ende der Zahl noch weitere
Zeichen enthält zeigt *err nicht auf '\0' und man weis das ein Fehler aufgetreten istchar* err; float umwandlung = strtod( zahl, &err, 10 ); /* 10 ist die basis des zahlensystems */ if ( *err == '\0' ) { printf("Zahl ist keine float"}; }
-
Hallo!
Du bist hier definitiv im falschen Forum, sollte nach Ansi C verschoben werden.
In C++ sieht das etwa so aus:
#include <iostream> #include <cstdlib> int main() { char zahl[50]; float umwandlung; std::cout << "Zahl: "; std::cin >> zahl; // Umwandlung umwandlung = std::atof(zahl); std::cout << "Neuer Wert: " << umwandlung << std::endl; }
Zur Erklärung: die Funktion atof wandelt die mit cin eingelesene Zeichenkette in einen float-Wert um (in Wirklichkeit wandelt sie den Wert in einen double-Wert um, der implizit zu float gecastet wird). Dieser Wert wird dann wieder ausgegeben.
Du gibst einen float-Wert mit printf als int aus, solltest ihn aber als float ausgeben.
So: printf("%f", float_wert); Außerdem geschieht die Umwandlung mit atof, nicht mit atoi.Außerdem fehlt dir noch ein Semikolon nach der Deklaration des Char-Arrays und die Funktion gets sollte nicht mehr verwendet werden, weil sie Buffer-Overflows erzeugt, wenn der Benutzer mehr Zeichen eingibt als eingelesen werden können!
[edit] Kleiner Fehler korrigiert
-
Wie würde das in Ansi C aussehen der Code?
-
Im simpelsten Fall ohne Fehlerhandling
umwandlung = atof(zahl);
Mit Fehlerhandling siehe mein leztes posting
Der Rest wäre dein Code bis auf diese Zeile
printf("Neuer Wert: %f", umwandlung);
-
Hier noch ein Beispiel was nicht so richtig umwandelt..
#include <stdio.h> #include <stdlib.h> void umrechnung(char *wert1, char *wert2); int main(void) { char a[50]; char b[50]; printf("Die Errechnung eines Durchschnitts\n"); printf("Zahl1: "); gets(a); printf("Zahl2 "); gets(b); printf("a hat: %s, b hat: %s\n",a,b); umrechnung(a,b); getchar(); } void umrechnung(char *wert1, char *wert2) { int google, hoogle; google = atoi(wert1); hoogle = atoi(wert2); printf("google: %f, hoogle: %f", google, hoogle); }
-
spielgrips, richtig hinschaun..
atoi char to integer
atof char to float
!!
-
Ich habs schon, zum Glück konnte
Japro
mir helfen.