我们可以在 c 中对字符串使用 switch-case 语句吗?

aTe*_*ile 3 c string switch-statement

int a = 0 , b = 0;
char* c = NULL;

int main(int argc , char ** argv){

    c = argv[2];
    a = atoi(argv[1]);
    b = atoi(argv[3]);

    switch(c){

        case "+": printf(a+b);
                  break;
    }

    printf("\n\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Bru*_*elo 5

不,你不能。Switch 旨在比较数字类型和扩展字符类型。相反,您应该使用strcmp函数,包含在字符串标头中:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char * argv[]) {
  if (argc != 4) {
    puts("Incorrect usage");
    return 1;
  }
  /* You should check the number of arguments */

  char * op = argv[1];
  int a = atoi(argv[2]);
  int b = atoi(argv[3]);
  /* You should check correct input too */

  if (strcmp(op, "+") == 0)
    printf("%d + %d = %d\n", a, b, a + b);
  else if (strcmp(op, "-") == 0)
    printf("%d - %d = %d\n", a, b, a - b);
  /* Add more functions here */

  return 0;
}
Run Code Online (Sandbox Code Playgroud)