2011-06-16 47 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讓你開始。