请告诉我我做错了什么
//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;
}
答案 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>
。