c - 在没有 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)
,因为它对我的用例来说太慢了。
解决方案
创建一个包含指针和长度的结构。然后你已经预先计算了长度并检查它应该很快。
一个更好的主意是使用已经为您执行此操作的其他人的字符串库。除了计算字符串长度之外,大多数库通过避免标准字符串操作大大提高了 C 的缓冲区安全性。
推荐阅读
- python - 错误---只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效的索引
- android - 我们如何在 android 中修改我的应用程序中的网络类型?
- c++ - 从 doIt 函数调用函数对象
- mysql - 从 table1 中选择不在 table2 中的列
- android - 找不到依赖项“com.google.android.gms:play-services-maps:17.0.0”
- jsf - 属性无法解析为 bean (JSF) 的成员
- flutter - 如果我们的小部件树中只有 StatelessWidget,我们就不需要 Keys 了吗?
- c# - 安装后使用 Wix 更新 app.config#
- swift - 是否可以在#selector 中使用数组条目?
- rust - 'std::cmp::PartialEq' 的实现不够通用