Verständnisfrage zu C

Gast #228351
Lesenswert?
• ▲
▼
Hallo,

ich hänge da schon wieder an einem Problem:

wie kann ich in C einem Array mehrere Werte auf einmal übergeben ?
Also ich kann ja z.B. ein Array erstellen mit

int test[3] = {1,2,3]

wenn ich jetzt aus 1,2,3 jedoch 4,7,2 machen möchte müsste ich dann

test[0] = 4;
test[1] = 7;
test[2] = 2;

schreiben...
geht das auch anders ? So wie beim initialisieren...

test = {4,7,2};

da meckert der Compiler leider...
vielleicht könnt ihr mir helfen ?

danke schon mal
gruß
Thomas
Gast #228352
Lesenswert?
• ▲
▼
Hallo,

ich würde die übergabe entweder dynamisch über Variablen praktizieren
(also wenn du zB. den Wert errechnest etc.) oder wenn möglich das ganze
in eine For-Schleife zu packen.
Direkte mehrfach übergaben sind nicht möglich.

Vielleicht können wir dir besser helfen, wenn du angibst was für Werte
du die in Felder übergeben willst und wo sie her kommen.

Gruß Christian
Gast #228353
Lesenswert?
• ▲
▼
diese Werte sind leider nicht berechnet, sondern so was ähnliches wie
ASCII Code. Da wird es mit einer for-Schleife ziemlich schwierig bzw.
zu aufwendig.
Ich möchte jeweils 16 Zeichen an ein Display übergeben.

Das wird so eine Art Bedienerführung. Wenn Taste 1 gedrückt soll auf
dem Display "Uhrzeit: ..." erscheinen und beim nächsten drücken z.B.
"Temperatur" usw.
Die Zeichen sind jedoch kein ASCII Code, sondern selbsterstellte. Also
A=11, B=12, C=13,... Nun wäre es schön, wenn man für das Wort "Menue"
einfach Display = {24,42,51,58,42,10}; schreiben könnte (10 ist ein
Leerzeichen).

Hoffe ich konnte das so einigermassen verständlich rüberbringen.

gruß
Thomas
Gast #228355
Lesenswert?
• ▲
▼
hmm das versteh ich nicht...

das array "Display" bleibt doch bestehen... also wenn ich z.B.
"Menue 1", "Menue 2", ... usw. anzeigen lassen will, ist klar,
brauch ich nur die Zahl ändern.
Oder sollte ich mir für die versch. Anzeigen Arrays als Const
definieren ? hmm dann brauch ich aber kein memcpy mehr..

??
#228356
Lesenswert?
• ▲
▼
So wie ich es verstanden habe, sind diese Zahlenfolgen, die du auf
einmal übergeben willst vordefiniert.
Wenn das so ist, kann man diese Zahlenfolgen in einem einzigen Array
speichern, und dann einfach aus diesem Array in das "text"-Array
kopieren, so etwa:
1
#include <avr/pgmspace.h>
2

3
bla.bla...
4
//Array im Flash
5
const int tabelle[256] PROGMEM = {24,42,51,58,42,10
6
                                  12,43,32,10,51,24
7
                                     ..........    };
8
//kopieren
9
memcpy_P (text, tabele, laenge);


Das was du hier versucht hast,und was nicht geht:
>Display = {24,42,51,58,42,10};
richtig:
dislpay[0]=24;
.....
dislpay[n]=xx;
ist auch im prinzip nichts anderes als aus einem Speicherbereich in das
Andere Daten zu kopieren (hier aus Flash ins SRAM).
Darüber hinaus denke ich das in deinem Fall besser als int wäre
unsigned char, du wirst ja keinen negativen Zahlen oder über 255
benutzen, oder ?

Ansonsten lese noch einmal Abschnitt "Programmspeicher" im
AVR-GCC-Tutorial:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29

Und in avr-libc doku, Abschnitt "Modules->Program Space String
Utilities":
http://www.nongnu.org/avr-libc/user-manual/

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.