C - string Konstante einem char zuweisen

OP #1381971
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
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.