gpt4 book ai didi

将未知长度的字符串与已知长度的字符串进行比较

转载 作者:行者123 更新时间:2023-12-02 06:46:21 26 4
gpt4 key购买 nike

我想比较未知长度的空终止字符串 (s1) 和已知长度的未终止字符串 (s2)。

!strncmp(s1, s2, s2_len) 接近正确,但如果 s2s1 的前缀,也会计算为真>.

strlen(s1) == s2_len && !strcmp(s1, s2) 是正确的,但扫描 s1 两次。

显然,手动比较字符串也可以,但我失去了 C 库在过去四十年中获得的所有 Shiny 优化。

有没有用C库函数实现这个的好方法?

最佳答案

if (!strncmp(s1, s2, s2_len) && s1[s2_len] == 0) {...}

如果 strncmp() 返回零,则 s2s1 的前缀。

  • 如果 s1[s2_len] 为 NUL,则 strings 相等
  • 如果不是:则 strlen(s1) > s2_len
  • 如果 strncmp() 返回非零值,则跳过第二个测试(short-cicuit 评估)

关于将未知长度的字符串与已知长度的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60251190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com