Hallo, ich würde gerne eine Define Liste in C anlegen die mir einen String einem Char zuweist, so dass der Compiler weiß was er tun soll wenn dieser String eingegeben werden wird. Beispiel: Um das Relais 1 anzuschalten habe ich im Programm den charwert 'a' definiert. Nun ist das für die Eingabe relativ unkomfortabel. Daher soll der Compiler wenn jmd eingibt: Relais01an dies in den charwert 'a' umsetzen. Leider habe ich dies weder mit #define ... noch mit const ... hinbekommen. Ich hoffe, jmd kann mir weiterhelfen. Danke schonmal im Vorraus! gruß
Hi Korbinian, das musst Du ausprogrammieren. Ein Mapping String -> char gibt es nicht. Könnte so ausschauen: const char myString[2] = { uga1, uga2 }; const char Code[2] = { 'a', 'b' }; char GetCode(char* pString) { for(i = 0; i < 2; i++) { if(0 == strcmp(myString[i] == pString) { return(Code[i]); } } return(0xFF); } Gruß Patrick
Patrick Markl schrieb: > Hi Korbinian, > > das musst Du ausprogrammieren. Ein Mapping String -> char gibt es nicht. > > Könnte so ausschauen: > > const char myString[2] = const char * myString[2] = Aber für so etwas setzt man zum Zwecke der besseren Wartbarkeit am besten Strukturen ein
1 | struct CommandMapping |
2 | {
|
3 | const char* commandString; |
4 | char commandShortcut; |
5 | };
|
6 | |
7 | struct CommandMapping commands[] = |
8 | {
|
9 | { "Relais1On", 'a' }, |
10 | { "Relais1Off", 'b' }, |
11 | { "Relais2On", 'c' }, |
12 | { "Relais2Off", 'd' }, |
13 | };
|
14 | |
15 | #define NR_COMMANDS ( sizeof( commands ) / sizeof( *commands ) )
|
16 | |
17 | char UnmapCommand( const char * string ) |
18 | {
|
19 | uint8_t i; |
20 | |
21 | for( i = 0; i < NR_COMMANDS; ++i ) { |
22 | if( !strcmp( commands[i].commandString, string ) ) |
23 | return commands[i].commandString; |
24 | }
|
25 | |
26 | return ' '; |
27 | }
|
28 | |
29 | int main() |
30 | {
|
31 | char code; |
32 | |
33 | code = UnmapCommand( "Relais2On" ); |
34 | |
35 | switch( code ) { |
36 | ...
|
37 | case 'c': |
38 | ...
|
39 | break; |
40 | |
41 | }
|
42 | }
|
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.