-3

请告诉我我做错了什么

//I'm trying to get the number of the month by sending its name.
#include <stdio.h>

我的功能

int monthstr2num (char month[]){                                                


if (month == "September")
    return 8;


}

int main (){
char month []={"September"};
int num;

num = monthstr2num (month);//func call

显示错误的输出,如 37814040

printf ("%d", num);

return 0;
}
4

4 回答 4

3

你的问题出在两个地方。

首先是你==用来比较字符串的地方,这在 C 中是不可能的(这是未定义的行为,它可以编译但不会做你想做的事)。您必须使用 C 库中名为strcmp. 它位于string.h并且可以像这样使用:

if(strcmp(month,"September")==0)
    return 8;

此外,当该 if 语句返回 false 时,您必须在 if 语句之外有另一个返回,例如return 0;

于 2012-09-28T18:57:34.163 回答
1

这段代码有两个问题:

1)(month == "September")比较指针而不是实际数据

2)当(month == "September")为假时,函数返回一些垃圾,因为这种情况没有返回语句

于 2012-09-28T18:53:15.383 回答
0
if (month == "September")

是错的。使用strcmp. 我对这个编译有点惊讶(因为我的数组/指针的微妙之处并不完美),但这最终会将这两个实体的内存地址作为指针进行比较。

于 2012-09-28T18:51:51.703 回答
0

不要==用来比较字符串。C 字符串是 a char *==并将比较指针。

C 标准库提供了用于比较 C 字符串的函数,例如:strcmp、 just #include <string.h>

于 2012-09-28T18:52:09.080 回答