我一直在尝试"在一个月内多少天".
我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()中永远不会得到零以外的任何值,它被初始化.