Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Grüßt euch!

Will gerade eine switch Abfrage basteln. Sinn ist Befehle (also eine überschaubare Anzahl an Zeichenkombinationen) zu erkennen und zu sortieren. Leider unterstützt ein switch ja keine strings. Was kann ich den da alternativ nehmen?

Steh da gerade voll auf dem Schlauch...

thx

Guybrush, er hat doch nach Alternativen gefragt. Dass das nicht geht, hat er schon gemerkt ;)

@suedpfaelzer: Du kannst natürlich eine Kaskade von if-Anweisungen benutzen. Je nachdem, was du dann daraus machen willst, kannst du auch eine Lookup-Tabelle oder einen assoziativen Container (in C++ beispielsweise std::map) benutzen.

du kannst auch nach char's abfragen. lass den benutzer doch einfach immer nur den ersten buchstaben eingeben... oder überprüfe nur den ersten buchstaben... weiß ja nicht was du genau machen willst.

entweder:

#include <stdio.h>

#include <stdlib.h>


int main (void)

{

   char test;


   printf ("eingabe:  \n(e)ins  \n(z)wei  \n(d)rei  \n...");

   scanf ("%c",&test);

   fflush (stdin);


   switch (test)

   {

          case 'e':

               printf("EINS\n");

               break;


          case 'z':

               printf("ZWEI\n");

               break;


          case 'd':

               printf("DREI\n");

               break;

          default:

               printf("FALSCHE EINGABE\n");

   }

   system ("pause");

}
oder:
#include <stdio.h>

#include <stdlib.h>


int main (void)

{

   char test[5] = {'\0'};


   printf ("eingabe:  \n(e)ins  \n(z)wei  \n(d)rei  \n...");

   scanf ("%s",&test);

   fflush (stdin);


   switch (test[0])

   {

          case 'e':

               printf("EINS\n");

               break;


          case 'z':

               printf("ZWEI\n");

               break;


          case 'd':

               printf("DREI\n");

               break;

          default:

               printf("FALSCHE EINGABE\n");

   }

   system ("pause");

}

ich hoffe das nützt die erstmal etwas.

Also zu dem was ich genau machen will:

Befehle die in die Kommandozeile eingegeben werden (z.B. dir) sollen eingelesen werden. Spezielle Befehle (z.B. Befehle die Programmbezogen sind) sollen erkannt und in eine extra Tabelle geschrieben werden.

Daher, das Programm muss den befehl erkennen und entscheiden, ob er zur Kategorie A oder B gehört und dann entsprechend mit ihm verfahren. Ein einzelner Buchstabe tut es da leider nicht @Vox Populi

If-Anweisungen sind auch nicht wirklich angebracht...

Wenn du keine if-Kaskade willst, kannst du eine einfache Lookup-Tabelle benutzen:

string known_commands[] = { "bla", "blubb", "hassenichgesehn" };
const size_t count = sizeof( known_commands ) / sizeof( known_commands[0] );

...

string eingabe = whatever;
if( std::find( known_commands, known_commands + count, eingabe ) != known_commands + count )
{
// Kategorie "bekannt"
}
else
{
// Kategorie "unbekannt"
}[/code]

Das lässt sich natürlich noch verbessern. Bei einer sehr großen Liste könnte man z.B. die Einträge sortieren und eine binäre Suche verwenden (oder gleich std::set benutzen).

Danke!!! :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.