Guten Abend miteinander. Die Frage wird von euch wahrscheinlich schnell beantwortet sein: Ich habe einen String. Sagen wir colour. Die kann die folgende "red", "blue", "green" und "yellow" haben. Jetzt will ich wenn colour = "green" die Variable green (unsigned char) verändern... Genauso mit den anderen Farben. Ich kann das natürlich mit if und case usw machen. Aber da gibt es doch bestimmt eine elegantere Lösung, oder? Also so irgendwie: color = "red"; .color += 1; //erhöht die Variable red um 1 color = "green"; .color += 1; //erhöht die Variable green um 1 Wäre nett wenn ihr mir da weiterhelfen könntet... Danke!
wieso machst du das nicht mit einem struct?
struct color_struct{
char red;
char green;
char blue;
}color;
Gast
#1483422
> Ich kann das natürlich mit if und case usw machen. Mit case kannst du es nicht machen. > Aber da gibt es doch bestimmt eine elegantere Lösung, oder? case wäre die elegante Lösung, wenn sie ginge. > Also so irgendwie: > > color = "red"; > .color += 1; //erhöht die Variable red um 1 > > color = "green"; > .color += 1; //erhöht die Variable green um 1 Ach sowas suchst du. Das gibt's in C nicht.
@Timo kannst du das bitte noch ein bisschen genauer erklären... Bin noch ganz neu in C! Danke
Das was du suchst, nennt sich "assoziatives Array" und wie Rolf schon schrieb: So was gibt es in C nicht. Man könnte es selbst programmieren aber ich denke nicht, dass du schon soweit bist.
> color = "red"; Es gibt in C keine Stringzuweisungen und Stringvergleiche. Ein String ist ein char-Array und wird mit strcpy() zugewiesen und mit strcmp() verglichen. > color = "red"; > .color += 1; //erhöht die Variable red um 1 Welche Sprache ist das ursprünglich?
Gast
#1483445
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Wenn du die zur Identifizierung nicht unbedingt einen String nehmen musst geht es auch ganz billig:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Lothar Miller schrieb:
> Welche Sprache ist das ursprünglich?
Ich meine sowas mal in Php gesehen zu haben
Gast
#1483455
PHP:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
PHP ist auch etwas anders. Das ist ja extra für String Handling usw. erstellt worden. In PHP nennt man das "Variable Variablen"
Gast
#1483591
Jo. In C nennt man das Vektor oder Zeiger :-}
Könntet ihr mir da kurz ein kleines Beispiel zeigen. Wie gesagt ich beschäftige mich mit GCC noch nicht so lang. Ich weiß aber was ein Zeiger/vektor ist jedoch kann ich mir detailiert wies funktionieren soll leider noch nix vorstellen...
Gast
#1483634
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Alternativ könnte man den Vektor auch von Hand sortieren und bsearch() benutzen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.