Jag har problem att använda funktionen bsearch i GNU C. aaa, listan är ju inte sorterad korrekt. Jag sorterade den i Word och den sorterar tydligen inte '-' korrekt. Men när jag sorterat listan rätt så fungerar det (och för detta har jag slösat flera timmar :-( bsearch hitta inte alla i listan
Jag har följande kod:
#include <string.h>
int main (int argc, char** argv)
{
int ans ;
int i = 0;
char limitEvTxt[15][7] = { "H1", "H2", "H3", "HD", "H-GRAD", "H-LARM", "H-VARN", "L1", "L2", "LD", "L- GRAD", "L-LARM", "L-VARN", "N-GRAD", "NORMAL" };
for (i=0; i< 15 ; i++ )
{
ans = bsearch ( limitEvTxt[i], limitEvTxt, 15, 7, strcmp );
printf ( "%s\t%d\n", limitEvTxt[i], ans );
}
return 0;
}
När jag kör programmet får jag resultatet:
H1 -1073746720
H2 -1073746713
H3 -1073746706
HD -1073746699
H-GRAD 0
H-LARM 0
H-VARN 0
L1 -1073746671
L2 0
LD 0
L-GRAD 0
L-LARM 0
L-VARN 0
N-GRAD -1073746629
NORMAL -1073746622
Det tolkar jag som att bsearch inte hittar alla i listan. VARFÖR?
Sv: bsearch hitta inte alla i listan