以下是编程珍珠的字符串函数。
int wordncmp(char *p, char* q)
{ int n = k;
for ( ; *p == *q; p++, q++)
if (*p == 0 && --n == 0)
return 0;
return *p - *q;
}
int sortcmp(char **p, char **q)
{ return wordncmp(*p, *q);
}
char *skip(char *p, int n)
{ for ( ; n > 0; p++)
if (*p == 0)
n--;
return p;
}
我不明白sortcmp()的作用是什么?并且跳过函数是否从char * p返回非null终止的部分或什么? 请解释一下。
答案 0 :(得分:2)
这完全是猜测,因为我没有这本书的副本,但看起来这些函数是用于处理由一系列由空字符分隔的“单词”组成的非常规字符串格式。
wordncmp()
比较了第一个k
字词,其中k
可能是在调用函数之前设置的全局变量。sortcmp()
获取指向字符串指针的指针,并且可能在使用qsort()
对字符串指针数组进行排序时用作比较器。skip()
跳过字符串中的n
个字词。在C ++中,你最好使用标准的字符串和算法库来做这类事情;很少有理由搞乱指针和非传统的字符串表示。
答案 1 :(得分:0)
sortcmp将双指针(char **)作为参数,wordncmp则不然。所以sortcmp是一种用双指针调用wordncmp的方法(char **)。它就像一个过载功能。
跳过你写的内容:
跳过函数返回非null 从char * p
终止部分
答案 2 :(得分:0)
如果in参数sortcmp()
和p
相等,我猜q
会返回0;如果p
小于q
或者如果p
大于q
,则为负值。在实现排序算法时,这是一个很有用的功能。