Ok, ich habe keine Ahnung was ich hier mache aber ich will dass es funktioniert. Ich habe eine "variable" eingestellt die verschiedenen Text beinhaltet, mal diesen, mal jenen. char display_buffer[80]; Jetzt habe ich da eine Funktion zusammengeschustert um eigene Zeichen im Display zu definieren. lcd_character_set(zeichen, pattern); Jetzt will ich in display_buffer folgendes unterbringen: display_buffer[0] = 0x08; display_buffer[1] = 0x14; display_buffer[2] = 0x08; display_buffer[3] = 0x00; display_buffer[4] = 0x00; display_buffer[5] = 0x00; display_buffer[6] = 0x00; display_buffer[7] = 0x00; Ich will da aber nicht so ein Monster im Quellcode stehen haben sondern hätte gerne soetwas wie das hier: display_buffer = { 0x08, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }; Damit ich dass der zuvor beschriebenen Funktion in dieser Art hier übergeben kann: lcd_character_set(0x00, display_buffer); Wenn ich eine weitere variable deklariere funktioniert das, also so: char my_pattern[8] = { ... }; Kann mir mal jemand sagen wie ich mir das mit der variablen display_buffer zurechtzaubern kann. Ich bin fest davon überzeugt, dass das funktionieren kann ohne eine weitere Variable deklarieren zu müssen.
NullAhnung schrieb: > Kann mir mal jemand sagen wie ich mir das mit der variablen > display_buffer zurechtzaubern kann. Ich bin fest davon überzeugt, dass > das funktionieren kann ohne eine weitere Variable deklarieren zu müssen. Tja, C teilt deine Überzeugung aber leider nicht. Arrays können nicht einfach als ganzes zugewiesen werden, nur als Initialisierung bei der Definition geht das. Die einzige Möglichkeit wäre mit memcpy() aus string.h und einem Stringliteral:
1 | memcpy(display_buffer, "\x08\x14\x08\x00\x00\x00\x00\x00", 8); |
Wirklich schön ist das aber IMO nicht. Andreas
Im ANSI-Standard wird es schwierig, aber der gcc ist schlauer:
1 | char display_buffer[80]; |
2 | // kopiert 8 Zeichen
|
3 | memcpy( display_buffer, |
4 | (char[]){ 0x08, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 }, |
5 | 8
|
6 | );
|
7 | |
8 | // kopiert inkl. abschließender 0, also 4 Zeichen:
|
9 | strcpy( display_buffer, |
10 | (char[]){ 0x08, 0x14, 0x08, 0x00 } |
11 | );
|
Siehe http://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Compound-Literals.html#Compound-Literals PS: Die Frage ist, ob es wirklich sinnvoll ist, dauernd Strings herumzukopieren. Mit einem char*, das mal auf den einen und mal auf den anderen String zeigt, kommt man meist schneller ans Ziel.
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.