搜索字符串数组中的字符串

我一直在变坏指针。 谁能告诉我我做错了什么?

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;} 

不知道你的word来自哪里。 你可能想要if (!strcmp(arr[n],key)) return n; (相反)。 数组的类型可能不是你想要的。 尝试

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

代替。 你有一个字符数组数组,并将它传递给你实际期望指针数组的地方。

char str[][16]更改为char *str[16] (或仅更改为char *str[] )。

此外,当字符串相等时strcmp返回零,所以你想要这样:

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

如果字符串相等, strcmp()返回 ! 你的测试应该是if (!strcmp(...))

另外,请考虑使用strncmp()

该参数作为char ** ar传递,这是不正确的。

其中一个替代方案是将原型改为:

int SearchString( char arr[][16], char* key, int size )获取预期的行为。