我目前正在阅读 Engineering a Sort Function 并尝试了解有关比较功能的以下几行:
要使用终结空字符对len-byte字符串数组进行排序, 使用标准字符串比较例程strcmp:qsort(a,n,len, 的strcmp);
要对指向字符串的指针数组进行排序,请使用strcmp 另一层次的间接。 int pstrcmp(char ** i,char ** j){return strcmp(* i,* j); }
字符串比较是明确的,但不能比较指向字符串的指针数组。我认为strcmp(*i, *j)
只会比较两个数组中的第一个字符串,但如果这些字符串匹配则返回0(= 相等)。代码甚至不会看第2,第3等索引处的字符串。
这个方法真的只是比较两个数组中的第一个字符串,还是我错过了什么?
答案 0 :(得分:1)
我认为strcmp(* i,* j)只会比较两个数组中的第一个字符串,但如果这些字符串匹配则会返回0(=相等)。代码甚至不会查看第2,第3等索引处的字符串。
你误解了这是为了什么。 “要排序一个指向字符串的数组 ......”。这是关于排序单个数组,而不是一个数组。
答案 1 :(得分:0)
qsort
{{1}}函数获取指向两个字符串(char *)的指针,{{1}}希望比较整个字符串数组