buscar una cadena en una matriz de cadenas

Sigo recibiendo malos punteros. ¿Alguien puede decirme que estoy haciendo mal?

int SearchString( char* arr[], char* key, int size ) { int n; for ( n = 0; n < size; ++n ) { if ( strcmp(arr[n], key) ) { return n; } } return -1; } 

 char str[][16] = { "mov","cmp","add","sub","lea","not","clr","inc","dec","jmp","bne","red","jrn","psr","rts","stop"}; if(SearchString(str,"word",16) == -1){ return FALSE;} 

No puedo decir de dónde proviene tu word . Probablemente quiera que if (!strcmp(arr[n],key)) return n; (el revés). Y el tipo de matriz probablemente no es lo que quieres. Tratar

 const char *str[] = { "mov",.... }; 

en lugar. Tiene una matriz de matrices de caracteres y la pasa a donde realmente espera una matriz de punteros.

Cambie char str[][16] a char *str[16] (o solo char *str[] ).

Además, strcmp devuelve cero cuando las cadenas son iguales, así que quieres esto en su lugar:

 if ( strcmp(arr[n], key) == 0 ) { 

strcmp() devuelve cero si las cadenas son iguales! Su prueba debe ser if (!strcmp(...))

También, considera usar strncmp() .

El parámetro se pasa como char ** ar que no es correcto.

Una de las alternativas es cambiar protopype a:

int SearchString( char arr[][16], char* key, int size ) para obtener el comportamiento esperado.