2011-06-16 108 views
0

我有2个字符数组,其中一个长度为50,其他长度从1 ... 50变化。我需要比较这些。在C++中比较不同长度的字符数组无字符串

问题是,包含50个字符的数组通常包含更少的字符,但是在比较时,它也会将它们考虑在内。因此,如果我有2个数组,其值为U2,第一个的长度为50,第二个为2.

那么,如何在不使用标准字符串库的情况下检查此问题?我不能使用字符串库,这是一个先决条件。

+4

是否因为这是作业而不能使用标准库? – 2011-06-16 15:40:38

+0

我想得到一个有意义的答案,你将不得不告诉我们你的意思是:“包含50个字符的数组,通常包含更少的字符”。它要么包含50个字符,要么包含更少的字符,但数字不能同时为50和50。你的意思是50个字符的数组,但更少意义?如果是这样,说明有多少是有意义的?它是一个字符串(以零字节结尾)?那另一个呢? – 2011-06-16 15:43:32

+0

是的,这是作业。但是,这不是整个作业。整个家庭作业要求我创建一个相当复杂的可搜索结构,使用列表和队列。 – 2011-06-16 15:47:05

回答

5

如果您不允许使用标准库功能,那么您的第一项任务是重新编程所需的功能。在你的例子中,这将是strcmp

编程这个功能并不困难 - 在线搜索应该找到几个可能的实现。

大致为:

  • 开始通过在一个循环中两个字符串走,直到字符串中遇到空字符。
  • 如果两者同时终止于一个空字符,它们是相等的;否则,字符串越长越大。
  • 在循环内部,比较每个单独的字符。
    • 如果字符相同,则继续;
    • 否则,返回。
1

如果串具有不同的尺寸,我认为你是更好地与strncmp()

int strncmp(const char *s1, const char *s2, size_t n); 

页:

它返回一个小于整数,如果发现s1,则分别等于或大于零,以小于,匹​​配或大于s2。

有一个自定义实施here让你开始。