首页 > 解决方案 > 在没有 strlen 的情况下确定哪个 char * 最短

问题描述

我有两个不同char *的,char *string1一个是不变的,一个是char *string2可以改变的。我char *string2从列表中检索。

我想找到最短的长度char *来使用它:

strncmp(string1, string2, shortest);.

这将在一个while循环中,如下所示:

...
int shortest;
while (string2) {
    // get the length of the shortest char *
    if (!strncmp(string1, string2, shortest))
        break;    
    string2 = list_next(list); // Returns NULL if there is no elements left
}
...

我不能使用strlen(const char *s),因为它对我的用例来说太慢了。

标签: cstrncmp

解决方案


创建一个包含指针和长度的结构。然后你已经预先计算了长度并检查它应该很快。

一个更好的主意是使用已经为您执行此操作的其他人的字符串库。除了计算字符串长度之外,大多数库通过避免标准字符串操作大大提高了 C 的缓冲区安全性。


推荐阅读