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

时间:2012-01-13 10:17:20

标签: c ansi

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

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

4 个答案:

答案 0 :(得分:4)

无法判断word的来源。你可能想要if (!strcmp(arr[n],key)) return n;(相反)。数组的类型可能不是你想要的。尝试

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

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

答案 1 :(得分:3)

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

此外,strcmp在字符串相等时返回零,因此您需要这样:

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

答案 2 :(得分:1)

如果字符串相等,

strcmp()会返回!您的测试应为if (!strcmp(...))

另外,请考虑使用strncmp()

答案 3 :(得分:1)

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

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

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