In C there is a switch
construct which enables one to execute different conditional branches of code based on an test integer value, e.g.,
int a;
/* Read the value of "a" from some source, e.g. user input */
switch (a) {
case 100:
// Code
break;
case 200:
// Code
break;
default:
// Code
break;
}
How is it possible to obtain the same behavior (i.e. avoid the so-called "if
-else
ladder") for a string value, i.e., a char *
?
If you mean, how to write something similar to this:
// switch statement
switch (string) {
case "B1":
// do something
break;
/* more case "xxx" parts */
}
Then the canonical solution in C is to use an if-else ladder:
if (strcmp(string, "B1") == 0)
{
// do something
}
else if (strcmp(string, "xxx") == 0)
{
// do something else
}
/* more else if clauses */
else /* default: */
{
}