A ver si me podeis echar una mano porque me stoy volviendo loco con esto xD, es respecto a una busqueda binaria pero con palabras. Os dejo el codigo a ver si veis algo, o algun consejo de como hacerlo. Thanks 
- #include <stdio.h> 
- #include <string.h> 
-   
- int main() 
- { 
- 	char palabra[20][20]; 
- 	char busqueda[20]=""; 
- 	char palabra_aux[20]; 
- 	int i, k, h, primero=0, ultimo=19, centro=10; 
- 	for(i=0;i<20;i++){ 
-     }// limpia el array 
-     for(i=0;i<5;i++){ 
-    	        printf ("Introduce una palabra:"); 
- 	        scanf ("%s", &- palabra [- i ]);
 
-     }// coge 5 palabras por teclado 
-   
-     for(k=19;k>=0;k--) 
-     { 
- 			for(h=0;h<k;h++) 
- 			{ 
- 				if((strcmp(- palabra [- h ],- palabra [- h +1])>0) && (strcmp(- palabra [- h +1],"")!=0))
 
- 				{ 
-                         strcpy(- palabra_aux ,- palabra [- h ]);
 
- 						strcpy(- palabra [- h ],- palabra [- h +1]);
 
- 						strcpy(- palabra [- h +1],- palabra_aux );
 
- 				} 
- 			} 
-   
-     }//ordena la lista 
-   
- 	i=0; 
- 	while(i<5) 
-     { 
- 	          printf ("Introduce una palabra para ver si se encuentra en la lista: "); 
-               primero=0;ultimo=19; 
- 	          while ((- primero <=- ultimo ) && (strcmp(- busqueda ,- palabra [- centro ])!=0))
 
- 	          { 
-                     centro=(primero+ultimo)/2;          
-                     if (strcmp(- busqueda ,- palabra [- centro ])<0){- primero =- centro +1;}
 
- 		            if (strcmp(- busqueda ,- palabra [- centro ])>0){- ultimo =- centro -1;}
 
- 		            printf("centro vale %d\n",-  centro );
 
-               }// busca en la lista 
- 	          if (strcmp(- busqueda ,- palabra [- centro ])==0) {printf ("La palabra se encuentra en la lista :)\n");}
 
- 	          else {printf ("La palabra no se encuentra en la lista :(\n");} 
-               i++; 
-     }// lo busca en 5 ocasiones 
-   
- return 0; 
- } 
-   
-   
EDITO: Solucionado 

 por fin, el array tiene que estar lleno o la busqueda al menos llena