質問: bsearch_name(a,0,size-1,keystr); if (pos >= 0) { printf("探索鍵(名前) %s, ID %d が a[%d] に見つかりました\n", keystr,a[pos].id,pos ); } else { printf("探索鍵(名前) %s は見つかりませんでした\n", a[pos].name ); } break; } return 0; } ```
回答: これなら、動くかもです。 未検証ですが ``` int bsearch_name( Student a[],int p,int q,char x[] ) { int t=(p+q)/2; if(p>q){ return -1; } if (!strcmp(a[t].name,x)){ return t; } if(strcmp(a[t].name,x)>0){ q=t; } else{ p=t; } return bsearch_name(a,p,q,x); } ```