试图按照this的例子。 (部分字符串排序...)
是否有任何明显的,会在stdlib的qsort.c这崩溃?
我也试过cstring_cmp与strncmp指定最多30个字符,比我有更多。
* fileArray [20]似乎正确填充字符串。
谢谢。qsort崩溃程序 - C
char* ptr_fileName;
char* fileArray[20];//number of files
size_t strings_len;
ptr_fileName = (char*)malloc((strlen(FindFileData.cFileName)+1)*sizeof(char));
memcpy(ptr_fileName, FindFileData.cFileName, strlen(FindFileData.cFileName)+1);
fileArray[i] = ptr_fileName;
strings_len = sizeof(fileArray)/sizeof(char *);
qsort(fileArray, strings_len, sizeof(char *), cstring_cmp);
//crashing in qsort.c
快速排序C-字符串比较功能:
/* qsort C-string comparison function */
int cstring_cmp(const void *a, const void *b)
{
const char **ia = (const char **)a;
const char **ib = (const char **)b;
return strcmp(*ia, *ib);
/* strcmp functions works exactly as expected from
comparison function */
}
为什么你的问题标记为C++?这是C代码,你正在以(硬)C方式进行。 – sbi 2009-08-27 18:06:55
你可以显示你用来初始化字符串的代码吗? – 2009-08-27 18:09:09
也许他使用C++编译器来编译代码,并且标准(也许)有不一致的地方,比如单元化内存被填满。这_matters_。 – 2009-08-27 18:09:12