int Comp(const void *a, const void *b)
{
char *product1 = *(char**)a;
char *product2 = *(char**)b;
return strcmp(product1, product2);
}
char *** suggestedProducts(char ** products, int productsSize, char * searchWord,
int* returnSize, int** returnColumnSizes){
*returnSize = 0;
if(products == NULL || productsSize <= 0 || searchWord == NULL) {
return NULL;
}
int wordLength = strlen(searchWord);
*returnColumnSizes = (int*)calloc(wordLength, sizeof(int));
if(*returnColumnSizes == NULL) {
return NULL;
}
char ***res = (char***)calloc(wordLength, sizeof(char**));
if(res == NULL) {
return NULL;
}
for(int i = 0; i < wordLength; i++) {
res[i] = (char**)calloc(3, sizeof(char*));
}
qsort(products, productsSize, sizeof(products[0]), Comp);
for(int i = 0; i < wordLength; i++) {
for(int j = 0; j < productsSize; j++) {
if(strncmp(searchWord, products[j], i + 1) == 0) {
int num = (*returnColumnSizes)[*returnSize];
if(num >= 3) {
break;
}
res[*returnSize][num] = (char*)calloc(strlen(products[j]) + 1, sizeof(char));
strcpy(res[*returnSize][num], products[j]);
(*returnColumnSizes)[*returnSize]++;
}
}
(*returnSize)++;
}
return res;
}
12-19
310
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-21
120
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)