0
\$\begingroup\$

I've written a small C function to handle the builtin commands of a custom shell that I'm writing in C. Is it better to use a switch instead?

int handleBuiltinCommands(char *input, int ret) {
    int built_in_command = 0;
    if (strcmp(input, "exit") == 0) {
        free(input);
        exit(0);
    }
    if (StartsWith(input, "cd")) {
        built_in_command = 1;
        runcd(input);
    }
    if (StartsWith(input, "checkEnv")) {
        built_in_command = 1;
        checkEnv(ret);
    }
    return built_in_command;
}

I compile it with gcc -pedantic -Wall -ansi -O3

(Background: Tokenizing a shell command)

\$\endgroup\$
  • 1
    \$\begingroup\$ You cannot switch over strings in C so the question whether doing so would be better is somewhat moot. \$\endgroup\$ – 5gon12eder Apr 17 '16 at 12:03
1
\$\begingroup\$

It's OK to use the if construction, although if you plan to have more than a few commands, using switch leads to cleaner code imho. In addition, why not using if else instead of just if? That way not all of your if have to be evaluated (in average).

\$\endgroup\$
  • 2
    \$\begingroup\$ The code is in C, so switch can't be used on strings, c.f. this SO post for some ideas around it. \$\endgroup\$ – ferada Apr 17 '16 at 12:44
  • \$\begingroup\$ Ow, that's right. \$\endgroup\$ – Enrique Marcos Apr 17 '16 at 18:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.