传递给函数时字符串错误

jmk*_*aer 3 c function

我一直在尝试"在一个月内多少天".

main看起来像这样:

int main(void) {
    int numberOfDays, month = 0;
    char* input = (char*) malloc(10);

    printf("Please enter a month (\"1\", \"Jan\", \"January\", \"jan\" or \"january\" etc.):\n> ");
    scanf(" %s", input);
    selectMonth(input);

    switch (month) {
        case 1:
            numberOfDays = 31;  break;
        ...
        default:
            numberOfDays = 0;
            printf("Invalid month.\n");
    }
...
Run Code Online (Sandbox Code Playgroud)

而且selectMonth:

int selectMonth(char* input) {
    int month = 0;

    if (!strcasecmp(input, "jan") || !strcasecmp(input, "january") || !strcasecmp(input, "1")) {
        month = 1;
    }
    ...

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

当我把selectMonth里面的内容main,它工作正常.但是当我为else/ifs设置一个单独的函数并返回月份时,开关直接进入默认情况.这是为什么?

我很感激任何帮助!

344*_*442 10

selectMonth(input);
Run Code Online (Sandbox Code Playgroud)

表达式的结果未分配给month...所以:

month = selectMonth(input);
Run Code Online (Sandbox Code Playgroud)

应该有助于解决您的上述问题.

请记住,C具有本地范围的变量,所以month你声明里面selectMonth一样month在声明的一个main().因此,一个in main()中永远不会得到零以外的任何值,它被初始化.