Hallo! Mein Problem: Ich möchte eingelesene Zahlen in eine double-Konstante umwandeln. Die Zahlen lese ich als String ein (mit char). DANKE! Im Handbuch steht dazu folgender Hinweis:
1 | |
Bloß der Befehl funktioniert so nicht?
|
Anzeige
|
Frage zur Umwandlung von einem Zeichen-String in eine double Zahl!Hallo! Mein Problem: Ich möchte eingelesene Zahlen in eine double-Konstante umwandeln. Die Zahlen lese ich als String ein (mit char). DANKE! Im Handbuch steht dazu folgender Hinweis:
Bloß der Befehl funktioniert so nicht?
Gast
#2118365
Jochen R. schrieb: > Bloß der Befehl funktioniert so nicht? Ist das eine Frage? Dann probiere es aus. Jochen R. schrieb: > double atof(const char *s) Was bedeutet denn
speziell der Stern? Jochen R. schrieb: > Die Zahlen lese ich als String ein (mit char). Wie meinst du das? Zeig doch mal ein wenig mehr Code... > Bloß der Befehl funktioniert so nicht? WAS funktioniert so nicht? Und dann noch der Rest: welche Plattform, welcher Compiler, welche Version? U.R. Schmitt schrieb: > Jochen R. schrieb: >> Bloß der Befehl funktioniert so nicht? > > Ist das eine Frage? Dann probiere es aus. > > Jochen R. schrieb: >> double atof(const char *s) > Was bedeutet denn
speziell der Stern? converts the initial characters in s into a double and returns it. So steht es im Handbuch!
so sieht mein Code aus! Warum sagt er mir dann.... illegal expression??? Des müsste doch so gehen oder??? DANKE! Lothar Miller schrieb: > Jochen R. schrieb: >> Die Zahlen lese ich als String ein (mit char). > Wie meinst du das? > > Zeig doch mal ein wenig mehr Code... > >> Bloß der Befehl funktioniert so nicht? > WAS funktioniert so nicht? > > Und dann noch der Rest: > welche Plattform, welcher Compiler, welche Version? Plattform: Freescale HC12 , imagecraft, V7 Fehler kommen heraus siehe oben! DANKE!
Gast
#2118381
U.R. Schmitt schrieb: > Was bedeutet dennconst char *s speziell der Stern? Um dir das googeln zu ersparen... http://www.c-howto.de/tutorial-zeiger.html
Gast
#2118384
und nochmal schrieb: > U.R. Schmitt schrieb: > >> Was bedeutet dennconst char *s speziell der Stern? > > Um dir das googeln zu ersparen... > > http://www.c-howto.de/tutorial-zeiger.html Leute ich weiss was der Stern bedeutet! Ich wollte dem TO die gelegenheit geben was zu lernen. Jochen R. schrieb: > I1 = double atof (strom1); Warum wohl einen Syntax Fehler?? Warum schreibst du da nochmal double dazu? Wie ist strom1 definiert? hast du schon jemals c programmiert? Du brauchst ein C Buch! Und solltest erst mal darin lesen!
Gast
#2118398
double atof(const char *s):
double test;
char * deinzahlstring = "45";
test = atof(deinzahlstring);
printf("%i",test);
Gast
#2118403
sorry, natürlich printf("%f", test);
Retender schrieb: > double atof(const char *s): > > double test; > char * deinzahlstring = "45"; > > test = atof(deinzahlstring); > > printf("%i",test); Ich habe jetzt aber die oberste Zeile nicht! Braucht man die wirklich?
so sieht jetzt mein Programm aus! Wobei die Is als double definiert wurden. Ich bekomme nun auch keine Fehler mehr! Von daher denke ich mal, dass das gehen müsste. Was meint ihr? Und wie kann ich bei dem Imagecraft-Compiler die internen Werte der Variablen anschauen also debuggen? Weiß das hier jmd? DANKE für eure Geduld ;) Zum Thema debuggen hab ich mir selber geholfen! ;) Einfach die Visual Studio Express C++ Version verwenden :) Damit kann man den C Code debuggen!
Gast
#2118613
Jochen R. schrieb: > converts the initial characters in s into a double and returns it. > > > > So steht es im Handbuch! > > > > > > double I1 =0; > > > > . > > . code... > > . > > > > I1 = double atof (strom1); > > > > > > > > so sieht mein Code aus! > > > > Warum sagt er mir dann.... illegal expression??? Des müsste doch so > > gehen oder??? Wenn Du eine Typumwandlung durchführen willst und Dein Compiler einen nicht zulässigen Ausdruck moniert, dann mach doch einmal runde Klammern um das double. Und zwar so... Il = (double) atof(stroml); Im Embedded C besagen die Klammern, dass hier ein CAST durchgeführt werden soll. Sollte das nicht funktionen, dann versuche zunächst die Variable Il auf den Typ zu deklarieren, der dem Rückgabewert von atof entspricht. Hier wäre das also float. Wenn das alles nichts hilft, dann poste doch bitte den vollständigen Fehlerkommentar. Damit erhöhen sich die Chance, herauszufinden, wass da nicht funktioniert. Übrigens, weißt Du gar, ob der Code nicht funktioniert. Er ist ja noch gar nicht kompiliert. Eine andere Frage: Wie kann ich von double in char wandeln??? mit ltoa??? DANKE!
Gast
#2118716
ltoa bedeutet long to ascii. Also kein double. Es geht mit sprintf. Nebenbei, wie ist den strom1 bei dir deklariert?
Kannst du des mit dem sprintf etwas genauer erklären? ;) THX!!
Gast
#2118743
sprintf heißt String PRINT Formated und schreibt nicht (wie printf) auf die Standardausgabe sondern in einen String.
strom1 muss aber genug Platz haben. Schau bei printf nach was da noch geht. Statt atof solltest du besser strtod nehmen. Da kannst du auch Fehler erkennen. Strom 1: 0 -> kommt das! Obwohl 55 herauskommen müsste! Bzw stehen müsste.
Wisst ihr warum das so ist? I1 ist double!
Gast
#2118777
Weil "%d" für Integer ist. Ich schrieb auch "%f". Statt (s)printf kann natürlich auch dtostrf genutzt werden. trotz dem f kommt immer noch 0 anstelle der Zahl??
Gast
#2118802
Rufus Τ. Firefly schrieb: > Statt (s)printf kann natürlich auch dtostrf genutzt werden. Da hier das Unterforum PC-Programmierung ist, habe ich darauf verzichtet. Schon mal I1 = 55; probiert? Alle Libraries eingebunden? DirkB schrieb: > Rufus Τ. Firefly schrieb: >> Statt (s)printf kann natürlich auch dtostrf genutzt werden. > > Da hier das Unterforum PC-Programmierung ist, habe ich darauf > verzichtet. > > Schon mal I1 = 55; probiert? > Alle Libraries eingebunden? Welche brauche ich hierfür??? Mit I1= 55 geht es ??? Dann muss was beim Umwandeln schief laufen!? Nur was? Hab was herausgefunden! Diese Zeile beschreibt I1 gar nicht?!
Warum???? Kann mir jmd von euch helfen! Ich habe nämlich gerade festgestellt, dass ich I1 = 0 bei der Initialisierung gesetzt habe. :) Bloß es müsste dennoch später gehen... also die Umwandlung mit Speicherung auf I1???
Gast
#2118835
Dann probier nochmal
Gast
#2118848
Also macht atof nicht. Geht
DirkB schrieb: > Also macht atof nicht. > Geht >
Hab den Fehler gefunden stdlib.h hat gefehlt :( Ey Freitag Mittag! Ich glaube ich mach Feierabend ^^ oder besser muss machen :D bei solchen Fehlern ^^ Aber DANKE!
Gast
#2118863
Das nächste mal auch die Compilerwarnungen beachten. Und auch einschalten. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|