Hallo Zusammen, ich will die Temperatur aus einem DS1631 lesen und diese an den UART schicken. Das klappt soweit auch ganz gut. Mein Problem ist nun das es irgendwie Probleme beim zusammenkopieren der Strings gibt. Hier mal etwas Code: typedef char* string; void main(void) { string text, str_temp; . . temp1 = i2c_readAck(); temp2 = i2c_readNak(); text = "Die aktuelle Temperatur ist: "; str_temp = make_str(temp1); -> bis hier hin ist noch alles okay, mit dem strcat scheint er Probleme zu haben. Warum? strcat(text, str_temp); } Ich hab oben mal alles schritweise Ausgeklammert und nur wenn der strcat mit drin ist hängt sich das Prg auf. Danke schon mal für Tips und Hinweise, der Jochen (der jetzt ins Bett geht)
Nein. Sorry, wenn das jetzt hart klingt, aber Du solltest Dir wirklich erstmal ein gutes C-Buch besorgen. C läßt sich übrigens besser auf Universalcomputern lernen als auf Microcontrollern, vorzugsweise mit einem Betriebssystem, daß illegale Speicherzugriffe ahndet (also nicht CP/M, MS-DOS, Win9x -- die stürzen dann nämlich gleich komplett ab). Deine Frage nach dem & zeigt nur, daß Du den Zusammenhang zwischen Feldern (Arrays) und Zeigern leider nicht verstanden hast: bei der Übergabe an Funktionen werden Felder ausschließlich als Zeiger (also per Referenz) übergeben. Das Ampersand wäre in diesem Deinem Fall zwar harmlos, ist es aber nicht immer, also schreibt man es besser nicht hin. Viel schlimmer ist aber, daß Du Dir keinerlei Gedanken darum gemacht hast, wo eigentlich Dein kombinierter String wirklich im Speicher landen soll. Letztendlich überschreibst Du wild irgendein Stück RAM, das Dir ,,nicht gehört'' (nämlich das Stück, das hinter dem String "Die aktuelle Temperatur ist: " zufällig im RAM gelegen ist). Du mußt Dir also grundlegend Gedanken machen, welcher Speicher wofür belegt wird, C bietet Dir eben keinerlei Laufzeitunterstützung, die dies für Dich automatisch erledigen würde.
Ich hab ein gutes C-Buch (K&R). Hab auch schon mal vor einiger Zeit einen C-Kurs gemacht. Mein Problem ist allerdings das ich ewig nichts mehr in C gemacht habe. So ein kleiner Denkanstoss >Letztendlich überschreibst Du wild irgendein Stück >RAM, das Dir ,,nicht gehört'' (nämlich das Stück, das hinter dem >String "Die aktuelle Temperatur ist: " zufällig im RAM gelegen ist). wie Deiner oben hilft mir dann auch wieder auf die Sprünge. Danke für die Hilfe, der Jochen. Der von C leider schon wieder viel zu viel vergessen hat. .
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.