Forum: Mikrocontroller und Digitale Elektronik array zu string (ds18s20)


von Tobias N. (silberkristall)


Lesenswert?

hallo,

ich habe meine DS18S20 library soweit am laufen. jetzt würde ich gerne 
noch eine weitere funktion haben um direkt einen sensor mit dem romcode 
und nicht mehr skip rom auszulesen. leider komme ich da nicht weiter.

unsigned char readtempfromrom(int romcode)
{
......
return (temp);
}

jetzt lese ich den rom code folgendermaßen ein:

for (i=0; i<8; i++)
{
rom_c[i] = readbyte();
}

hierdurch steht der romcode im rom_c array. für die oben erwähnt 
funktion brauche ich den romcode aber in einem einzigen string ohne ihn 
mit .....[0] bis .....[7] angeben zu müssen daher dachte ich mir

for (i=0; i<8; i++)
{
strcat(romcode, &rom_c[i]);
}

leider muss ich die einzelnen elemente dann wieder mit romcode [0] bis 
romcode[7] aufrufen, ich möchte aber das der gesamte romcode dann in der 
variable romcode steht, wie setze ich das um?

dann würde ich gerne noch wissen wie manche das machen das sie in ihrem 
romcode auch buchstaben haben, mein romcode besteht rein aus zahlen.

ich hoffe man versteht was ich brauche und man kann mir helfen.

danke

von Fabian O. (xfr)


Lesenswert?

Ein String ist in C nichts anderes als ein Char-Array. Dein Array rom_c 
ist also im Prinzip schon ein String, sofern es vom Typ char[] ist und 
Du es noch mit einer Null terminierst.

Lies Dir mal diesen Artikel durch, da ist das alles beschrieben:
http://www.mikrocontroller.net/articles/String-Verarbeitung_in_C

von Tobias N. (silberkristall)


Lesenswert?

das habe ich mir schon durchgelesen. ich kapiere diese ganze pointer 
sache etc nicht.

egal was ich wann wie auch tue ich erhalte von meinem string immer nur 
den ersten wert. ich will aber einen ganzen string.

wenn ich z.b. schreibe:

test = "inhalt";

dann kann ich das einfach mit dem aufruf von test weiter verwenden. beim 
rom_c oder auch romcode muss ich weitergehend mit rom_c[..] arbeiten und 
bei romcode ebenfalls. der romcode soll aber einfach in romcode stehen, 
also als ob ich den selber schreiben würde. romcode = "1234567890" nur 
halt dynamisch aus den array inhalten. in php, bash, phyton sowie perl 
ist das spielend einfach.

von Fabian O. (xfr)


Lesenswert?

Tobias N. schrieb:
> ich kapiere diese ganze pointer sache etc nicht.

Ohne Zeiger verstanden zu haben wirst Du in C nicht weit kommen. Da 
musst Du ansetzen und es lernen. Es ist kein Hexenwerk, aber man muss 
sich darauf einlassen.

Du kannst auch ein vollständiges, kompilierbares Codebeispiel posten, 
was Du schon versucht hast. Schreib dazu, was welche Funktion genau 
machen soll bzw. was sie macht. Dann kann man versuchen Dir zu erklären, 
wo der Fehler liegt. Für Dich jetzt einen allgemeinen Aufsatz über 
Zeiger und Strings zu schreiben hat nicht viel Sinn, das gibt es schon 
tausendfach in jedem C-Buch und Tutorial.

von Tutor (Gast)


Lesenswert?

Tobias N. schrieb:
> das habe ich mir schon durchgelesen. ich kapiere diese ganze pointer
> sache etc nicht.

Warum glauben manche Zeitgenossen, dass man einen Text schon beim ersten 
Anlauf verstanden haben muss?  Dies scheint die weit verbreitete Pest 
der Instant-Generation zu sein. Immer alles und zwar sofort.

Das Verständnis eines (Fach-)textes erschliesst sich je nach Komplexität 
in mehreren Stufen.
1
while (!verstanden)
2
{
3
    lese();
4
    lerne();
5
}

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.