Frage zur Umwandlung von einem Zeichen-String in eine double Zahl!

#2118374
Lesenswert?

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
1
const char *s
 speziell der Stern?

converts the initial characters in s into a double and returns it.

So steht es im Handbuch!

1
double I1 =0;
2

3
.
4
. code...
5
.
6

7
I1 = double atof (strom1);

so sieht mein Code aus!

Warum sagt er mir dann.... illegal expression??? Des müsste doch so 
gehen oder???

DANKE!
#2118379
Lesenswert?

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 #2118384
Lesenswert?

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!
#2118423
Lesenswert?

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?
1
//Umwandlung der eingelesenen Werte in double
2

3
I1 = atof (strom1);
4
I2 = atof (strom2);
5
I3 = atof (strom3);
6
I4 = atof (strom4);

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 ;)
Gast #2118613
Lesenswert?

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.
Gast #2118743
Lesenswert?

sprintf heißt String PRINT Formated und schreibt nicht (wie printf) auf 
die Standardausgabe sondern in einen String.
1
sprintf(strom1,"%f",I1);

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.
#2118821
Lesenswert?

Hab was herausgefunden! Diese Zeile beschreibt I1 gar nicht?!
1
I1 = atof (strom1);

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???

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren