编程珍珠的字符串函数

时间:2010-07-30 10:08:31

标签: c++

以下是编程珍珠的字符串函数。

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终止的部分或什么? 请解释一下。

3 个答案:

答案 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,则为负值。在实现排序算法时,这是一个很有用的功能。