Servus zusammen,
auf einen ATmega32 würde ich gerne Zeichenketten miteinander verknüpfen
wollen.
Nun ist meine Idee die, dass ich die vorgefertigte Methode strcat (char
Datentyp) benutze, um die vorher definierten Arrays immer weiter
miteinander zu verknüpfen.
Das Prinzip ist von der Verknüpfung her wie im Beitrag
Beitrag "Array of String Arrays"
Im Code sieht das so aus:
1 | char arrayEINS [] = "(1111)";
|
2 | char arrayZWEI[] = "(222)";
|
3 | char arrayDREI[] = "(333)";
|
4 | char arrayVIER [] = "4444";
|
5 | char arrayFUENF[] = "5,5,5";
|
6 | char arraySECHS [] = "6666";
|
7 | char arraySIEBEN[] = "77";
|
8 | char arrayACHT[] = "8-8-8";
|
9 |
|
10 |
|
11 | strcat(arrayZWEI, arrayEINS);
|
12 | strcat(arrayZWEI, arrayDREI);
|
13 | strcat(arrayZWEI, arrayVIER);
|
14 | strcat(arrayZWEI, arrayFUENF );
|
15 | strcat(arrayZWEI, arraySECHS);
|
16 | strcat(arrayZWEI, arraySIEBEN);
|
17 | strcat(arrayZWEI, arrayACHT);
|
18 |
|
19 |
|
20 |
|
21 | while(1)
|
22 | {
|
23 | uart_puts(arrayZWEI);
|
24 | }
|
die Methode uart_puts habe ich aus den ausführlichen Tutorial von dieser
Seite benutzt, und ich kapier auch, was sie tut.
Nur bin ich mir nicht sicher, wie ich ALLE Zeichenketten miteinander
verknüpfen kann, da es keine Strings gibt.
(in java war es das "+", was zum Erfolg geführt hatte).
Mit obrigen Code kann ich bis zu einer scheinbar?! gewissen Länge immer
wieder in das dest von arrayZWEI speichern, aber irgendwann werden keine
richtigen Zeichen mehr übertragen.
(die ÜBertragung über UART habe ich bereits getestet und läuft auf einer
einzelnen Zeichenkette oder über Zeichen einfach wunderschön ;))
Nun frage ich mich, ob ich die obrigen Arrays anders schreiben muss,
also mit {'c'.....}, und dann einfach char str1[] =
{"arrayinhalt1desanderenarrays", "arrayinhalt2desanderenarrays"}
zusammenfüge.
Warum ist eigentlich die Begrenzung ab einer gewissen Länge vorhanden,
hat das mit der Speichergröße eines Arrays zu tun? (ich habe anfangs gar
keine feste Größe definiert, oder kann er dann diese größe nichtmehr
umschreiben?)
Hat jemand einen Tipp (keine Lösung)?
EDIT_1: Mir scheint es so, dass ich die funktion strcat nur in
begrenzter Anzahl hintereinander benutzen kann. Warum?
Mfg,
tommyProg