コンパイラすると、なぜか、一番目の"atto"しか表示してくれません。 keyをかえてもうまくいきません。
環境は、macのxcodeを使って開発しています。
①なぜ、atto のみを算出してしまうのか?
②なぜ、baseにエラーが発生してしまうのか?
この疑問を解いてほしいです。
初心者なので解説よろしくお願いします。
char *base[NUM_DATA] = {"atto", "centi", "deca ", "deci ",
"exa ", "femto", "giga ", "hecto",
"kilo ", "mega ", "micro", "milli",
"nano ", "peta ", "pico ", "tera "
};
int BSearch(char *key,const char base[][NUM_DATA], int bottom, int top)
{
int middle;
int temp;
int i;
int t;
if (bottom == top){ /* 探索範囲が0になったら */
return (-1);
middle = (top + bottom) / 2;
t=middle;
temp = strcmp(key, base[middle]);
for(i=0;i<=middle;i++){
for(t=middle;t<0;t--){
if (temp == 0){
return middle;
}else if (temp > 0) { /* 中央の要素より右を探す */
if(top == middle + i){
return(-1);
}else{
return(middle+i);
break;
}
}else{
if(middle-t == 0){
return(-1);
}else{
return(middle-t);
break;
/* 中央の要素より左を探す */
//BSearch(key, base, bottom, middle);
}
}
}
}
}
return 0;
}
int main(void)
{
int i;
int temp;
char *key="exa"; /* 検索対象の文字列 */
int top = NUM_DATA - 1;
int bottom = 0;
printf("キーワード:%s¥n", key);
printf("検索対象のデータ:%s¥n", key);
for (i = 0; i < NUM_DATA; i++)
printf("¥t%s¥n", base[i]);
//ここから//
if ((temp = BSearch(key,base,bottom, top)) != -1){ //<-baseにエラーがでる
printf("¥n見つかりました: %sは %d 番目の要素です。¥n",base[temp], temp + 1);
}else{
printf("¥n見つかりません。¥n");
}
}