搜索字符串数组中的字符串
我一直在变坏指针。 谁能告诉我我做错了什么?
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 )
获取预期的行为。