请告诉我我做错了什么,因为monthstr2num返回的值是错误的

时间:2012-09-28 18:50:02

标签: c arrays string function

请告诉我我做错了什么

//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 个答案:

答案 0 :(得分:3)

你的问题出在两个地方。

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

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

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

答案 1 :(得分:1)

这段代码有两个问题:

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

2)当(month == "September")为false时,该函数返回一些垃圾,因为此案例没有return语句

答案 2 :(得分:0)

if (month == "September")

错了。使用strcmp。我对这个编译感到有些惊讶(因为我在我的数组/指针细微之处并不完美),但这将最终比较这两个实体的内存地址作为指针。

答案 3 :(得分:0)

请勿使用==来比较字符串。 C字符串是char *==将比较指针。

C标准库提供了比较C字符串的功能,例如:strcmp,只是#include <string.h>