関数がうまく動作しない
関数get_monthにchar *型の文字列を引数にして、先頭の三文字(大文字でも小文字でも可)が正しいかどうかを関数strnxcmpでチェックしていくものです。
ところが、関数get_month中のreturn iで帰ってくるのはメインプログラムを動作させたところいつも0になってしまっているようです。(本当は1~12が帰ってくるようにしたい。)
for(i=1;i<=12;i++)
{
if(strnxcmp(tuki[i],s,3)==0)
{
return i;←ここのリターンで0が帰ってきてしまう。
}
}
}
何がおかしいためにこのようになってしまうのでしょうか?
よろしくお願いします。
int strnxcmp(const char *s1,const char *s2,size_t n)
{
while(n && toupper(*s1) && toupper(*s2))
{
if(toupper(*s1) != toupper(*s2))
{
return ((unsigned char)*s1 - (unsigned char)*s2);
}
s1++;
s2++;
n--;
}
if(!n)return 0;
if(*s1) return 1;
return -1;
}
int get_month(char *s)
{
int m,i;
char *tuki[]={"","January","Feburary","March","April","May","June","July","Augst",
"September","October","November","December"};
for(i=1;i<=12;i++)
{
if(strnxcmp(tuki[i],s,3)==0)
{
return i;
}
}
return -1;
}
お礼
なるほど、戻り値に0以外の数値があれば実行されるということですね 回答ありがとうございました