試圖按照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