比较不带字符串库的c ++中不同长度的char数组

时间:2011-06-16 15:39:17

标签: c++

我有2个char数组,一个长度为50,另一个长度为1 ... 50。我需要比较这些。

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

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

2 个答案:

答案 0 :(得分:5)

如果不允许使用标准库功能,那么您的首要任务是重新编写所需的功能。在您的示例中,这将是strcmp

编程此功能并不困难 - 在线搜索应该找到几种可能的实现方式。

大致是:

  • 开始遍历循环中的两个字符串,直到遇到任一字符串中的空字符。
  • 如果两者同时终止于空字符,它们是相等的;否则较长的字符串会更大。
  • 在循环内部,比较每个角色。
    • 如果字符相等,请继续;
    • 否则,请返回。

答案 1 :(得分:1)

如果字符串的大小不同,我认为strncmp()

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

来自 man 页面:

  

如果找到s1,则返回小于,等于或大于零的整数,小于,匹配或大于s2。

有一个自定义实现here可以帮助您入门。