C语言 在字符串数组中搜索字符串

y4ekin9u  于 2023-03-22  发布在  其他
关注(0)|答案(4)|浏览(205)

我总是得到不好的指点。谁能告诉我我做错了什么?

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

scyqe7ek1#

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

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

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

b1payxdu

b1payxdu2#

char str[][16]更改为char *str[16](或仅更改为char *str[])。
此外,strcmp在字符串相等时返回零,因此您需要这样做:

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

1hdlvixo3#

如果字符串相等,strcmp()返回 * 零 *!您的测试应该是if (!strcmp(...))
另外,考虑使用strncmp()

flseospp

flseospp4#

参数以char**ar形式传递,这是不正确的。
其中一个替代方案是将protopype更改为:
int SearchString( char arr[][16], char* key, int size )以获得预期的行为。

相关问题