You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何将switch case与数组结合使用?

Using switch with String Arrays in C

Got it, since C's switch statement only works with integer types (like int, char, or enum values) and can't directly compare strings, we need a small workaround to map your string array options to integer indices first. Here's a clear example and breakdown:

Step 1: Define your option array and a helper function

First, create your array of options, then write a helper function that takes an input string and returns the index of the matching option (or a sentinel value like -1 if no match is found). This lets us convert the string comparison into an integer we can use with switch.

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

// Define your options array
const char *options[] = {"option1", "option2", "option3", "quit"};
// Calculate the number of options (avoids hardcoding)
#define OPTION_COUNT (sizeof(options) / sizeof(options[0]))

// Helper function to get the index of a matching option
int get_option_index(const char *input) {
    for (int i = 0; i < OPTION_COUNT; i++) {
        if (strcmp(input, options[i]) == 0) {
            return i;
        }
    }
    // Return -1 if no match is found
    return -1;
}

Step 2: Use switch with the index

Now you can use the integer index returned by the helper function in your switch statement:

int main() {
    char input[50];
    printf("Enter an option (option1/option2/option3/quit): ");
    fgets(input, sizeof(input), stdin);
    
    // Remove the newline character added by fgets
    input[strcspn(input, "\n")] = '\0';
    
    int option_index = get_option_index(input);
    
    switch(option_index) {
        case 0:
            printf("Executing task for option1!\n");
            // Add your task logic here
            break;
        case 1:
            printf("Executing task for option2!\n");
            // Add your task logic here
            break;
        case 2:
            printf("Executing task for option3!\n");
            // Add your task logic here
            break;
        case 3:
            printf("Exiting program...\n");
            return 0;
        default:
            printf("Invalid option! Please try again.\n");
            // Handle invalid input logic here
            break;
    }
    
    return 0;
}

Key Notes:

  • The helper function uses strcmp to compare the input string with each element in the array—make sure to include <string.h> for this.
  • Using OPTION_COUNT ensures you don't have to update the loop limit manually if you add/remove options later.
  • The default case handles any input that doesn't match your options, which is important for robustness.
  • We use strcspn to strip the newline from fgets input—this prevents mismatches from extra whitespace.

If you want to make it more readable, you can also use an enum to name the indices instead of using raw integers:

typedef enum {
    OPTION1,
    OPTION2,
    OPTION3,
    QUIT,
    INVALID_OPTION
} Option;

// Then adjust the helper function to return Option instead of int
Option get_option(const char *input) {
    for (int i = 0; i < OPTION_COUNT; i++) {
        if (strcmp(input, options[i]) == 0) {
            return (Option)i;
        }
    }
    return INVALID_OPTION;
}

This makes your switch cases more self-documenting (e.g., case OPTION1: instead of case 0:).

内容的提问来源于stack exchange,提问作者User1491

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:55:25