我正在嘗試編寫一個函數來搜索數組以查找指定的鍵。參數n指定數組的有效大小,它必須按照strcmp施加的字典順序排序。如果找到該鍵,該函數將返回數組中出現該鍵的索引,因此它可以返回子字符串的索引。但是,它帶來了兩個錯誤:我無法解決。請幫助。期望'const char *',但參數的類型爲'char **'in C
[email protected]:~/Program_C/programming_abstractions_in_c/FindStringInSortedArray$ gcc FindStringInSortedArray.c -o FindStringInSortedArray
FindStringInSortedArray.c: In function ‘FindStringInSortedArray’:
FindStringInSortedArray.c:7:3: warning: passing argument 1 of ‘strlen’ from incompatible pointer type [enabled by default]
/usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘char **’
[email protected]:~/Program_C/programming_abstractions_in_c/FindStringInSortedArray$
這是我的代碼:
#include<stdio.h>
#include<string.h>
int FindStringInSortedArray(char *key,char *array[],int n)
{
int mid,cmp;
int low=strlen(array)-n;
int high=n;
if(low > high) return(-1);
mid = (low+high)/2;
cmp = strcmp(key,array[mid]);
if(cmp==0) return(mid);
if(cmp<0){
return(FindStringInSortedArray(key,array,n/2));
}else{
return(FindStringInSortedArray(key,array+n/2,n));
}
}
int main()
{
char key[2]="ab";
char *array[10]={"ab","bc","cd","de","ef","fg","gh","hi","ij","jk"};
int test=FindStringInSortedArray(key,array,10);
printf("Result:%d\n",test);
return 0;
}
但我必須使用相同的函數原型爲「FindStringInSortedArray(字符串鍵,字符串數組[],int n) – luojiebin
'char key [2] =「ab」;'也是錯誤的,你不會留下足夠的空間給字符串終結符。 。 – glglgl