gpt4 book ai didi

c - 传递给函数时错误的字符串

转载 作者:太空狗 更新时间:2023-10-29 15:51:58 25 4
gpt4 key购买 nike

我一直在尝试“给定月份有多少天”。

我的 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");
}
...

selectMonth:

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

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

return month;
}

当我将 selectMonth 的内容放入 main 时,它工作正常。但是当我有一个单独的 else/ifs 函数并返回月份时,开关直接转到默认情况。这是为什么?

如果有任何帮助,我将不胜感激!

最佳答案

selectMonth(input);

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

month = selectMonth(input);

将帮助您解决上述问题。

请记住,C 有局部作用域变量,因此您在selectMonth 中声明的月份 不是main() 中声明的相同 month。因此,main() 中的那个永远不会得到除零以外的任何值,它是用零初始化的。

关于c - 传递给函数时错误的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com