https://phoxis.org/2012/07/12/get-sorted-index-orderting-of-an-array/
我在
部分尝试了这个方法在C中使用qsort
对数组进行排序并返回索引,将数组base_arr更改为double *类型。但是,当我将arr [idx [i]]打印到屏幕时,一半的值已经更改为0并且已经被排序,好像它们一直是0.可能导致这种情况发生?
#include <iostream>
#include <string>
bool CheckSubstring(std::string firstString, std::string secondString){
if(secondString.size() > firstString.size())
return false;
for (int i = 0; i < firstString.size(); i++){
int j = 0;
// If the first characters match
if(firstString[i] == secondString[j]){
int k = i;
while (firstString[i] == secondString[j] && j < secondString.size()){
j++;
i++;
}
if (j == secondString.size())
return true;
else // Re-initialize i to its original value
i = k;
}
}
return false;
}
int main(){
std::string firstString, secondString;
std::cout << "Enter first string:";
std::getline(std::cin, firstString);
std::cout << "Enter second string:";
std::getline(std::cin, secondString);
if(CheckSubstring(firstString, secondString))
std::cout << "Second string is a substring of the frist string.\n";
else
std::cout << "Second string is not a substring of the first string.\n";
return 0;
}
答案 0 :(得分:2)
qsort(idx, N, sizeof(idx), idxSort);
应该是
qsort(idx, N, sizeof(*idx), idxSort);
idx
是一个指针。 qsort
不需要知道poiner的大小,需要知道数组元素的大小。
您的malloc
来电相同。您需要在其中使用sizeof(*idx)
和sizeof(*ptr)
。顺便说一句,不要投射malloc
的结果。