簡體   English   中英

在字符串數組中搜索一個字符串

[英]search a string in an array of strings

我一直在指教不好。 誰能告訴我我在做什么錯?

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[][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 )以獲取預期的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM