Forum: Mikrocontroller und Digitale Elektronik String to Float


von Cronix (Gast)


Lesenswert?

Guten Tag,

ich benutze den CCS compiler und schreibe für den 18F4550 ein Programm.

Nun stehe ich vor dem Problem das ich 4 Werte konvertieren muss.

1. Time --> 152607
2. Breitengrad -> 4563.2354
3. Längengrad -> 01464.3215
4. Höhe -> 470.02

Diese in einem char array gespeicherten Werte will ich in floats 
umwandeln.

Habe dazu folgende Methode geschrieben:
1
float stof(char *convert) {
2
   float converted;
3
   int8 i = 0;
4
   int1 coma = 0;
5
   float hilf = 0.1;
6
    while(convert[i] != '\0' ) {    // nächstes Zeichen
7
      if(convert[i] != '.' && coma == 0) {
8
         converted = 10 * converted + (convert[i] - '0' );
9
      } else {
10
         coma = 1;
11
         if(convert[i] != '.') {
12
            converted += (convert[i] - '0') * hilf;
13
            hilf = hilf * 0.1;
14
         }
15
      }
16
      i++;
17
    }
18
   return converted;
19
}

Nun habe ich das Problem, dass der 3. konvertierte Werte (Längengrad) 
immer 0.0000 ergibt oder -732193.23 (also unsinnige Zahl), trotz einem 
zugewiesenen richtigen Wert welcher nicht 0 ist!

Ich hoffe mir kann wer helfen! :)

von dave (Gast)


Lesenswert?

initialisiere mal die variable converted, bevor du sie verwendest

von Cronix (Gast)


Lesenswert?

Danke :) Hat geholfen!!! :)

Puhh C ist so empfindlich^^

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
Noch kein Account? Hier anmelden.