Hallo alle zusammen! Über eine Tastatur gebe ich Werte an ein LCD aus. Jeder Tastendruck (eigentlich der Wert) wird in den String "zeichen_kette" abgespeichert. Nach drücken von '#', quasi ENTER, habe ich also z.B folgenden String: zeichen_kette[] = "123.254" Da ich mit dem Wert von zeichen_kette noch weitere Rechenoperationen durchführen muss, habe ich versucht den String mit atof() umzuwandeln. float komma_zahl; komma_zahl = atof(zeichen_kette); Folgende Fehlermeldung habe ich erhalten: "Undefined external "atof" referred in xxx.c [pfadangabe wo sich xxx.c befindet]" Als Test habe ich dann anstatt atof() atoi() verwendet. Das hat funktioniert. Für obigen Beispielstring war das Ergebnis: "123"! Aufgrund der Genauigkeitsanforderung brauche ich aber die Nachkommastellen. Warum funktioniert atoi(), aber atof() nicht? Kann mir da bitte jemand weiterhelfen!? Schöne Grüße Jonny
Ob bei Jonny atof() "funktioniert" oder nicht, ist aus der Schilderung so erstmal nicht zu entnehmen. Offensichtlich ist dem Compiler an der Stelle keine Deklaration von atof() bekannt - also ist die entsprechende Headerdatei nicht eingebunden. Üblicherweise müssen math.h und stdlib.h eingebunden werden, damit atof() deklariert ist; für atoi() genügt stdlib.h. Der Hinweis von Berthold ist nur dann erforderlich, wenn atof() in keiner der zum Compiler gehörenden Headerdateien deklariert ist (und auch nicht in der Standardlibrary vorhanden ist), was aber ein sehr eigenartiger C-Compiler sein müsste.
Vielen Dank - jetzt funktioniert es! Verstehen tue ich's zwar trotzdem nicht warum atoi funktioniert und atof nicht, aber wie gesagt, vielen Dank! Servus Jonny
@ Rufus Also stdlib.h ist als Header eingefügt. Auch habe ich math.h eingefügt, hat aber nicht zum Erfolg geführt. Auf deinen Hinweis hin habe ich einmal stdlib.h geöffnet. Da finde ich folgende Zeilen: . . . __INTRINSIC MEMORY_ATTRIBUTE int atoi(const char *); __INTRINSIC MEMORY_ATTRIBUTE long atol(const char *); __INTRINSIC MEMORY_ATTRIBUTE double atof(const char *); . . . Also müsste das doch funktionieren, oder nicht? Hier mal meine Variablen-Deklaration: int z; int button; char zeichen_kette[17]; double komma_zahl; Hier der Funktionsaufruf: zeichen_kette[z] = button; Kann mir bitte jemand weiter helfen!? Vielen Dank für eure Hilfe! Jonny
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.