strcat Probleme

Gast #74975
Lesenswert?

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

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

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

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