gpt4 book ai didi

c++ - 如何检查 `strcmp`是否失败?

转载 作者:行者123 更新时间:2023-11-30 21:49:35 25 4
gpt4 key购买 nike

这个问题是关于 C 和 C++ 的,因为 strcmp 都存在于它们中。

我发现了这个链接:C library function - strcmp() .

这里解释了strcmp的返回值。我知道每一个功能,无论它有多安全,都有可能失败。因此,我知道即使 strcmp 有时也会失败。

另外,我遇​​到了this问题还解释了 strcmp 的返回值。经过大量搜索后,我找不到一个网站解释如何检查 strcmp 是否会失败。

我首先想到它会返回 -1,但事实证明,如果第一个字符串较小,它会返回数字 < 0。那么有人可以告诉我如何检查 strcmp 是否失败。

编辑:好吧,我不明白strcmp不失败的意义。函数失败的方式有很多种。例如,在一条评论中写道,如果堆栈不扩展,可能会导致堆栈溢出。任何语言的程序都不是绝对安全的!

最佳答案

没有定义strcmp可能失败的情况。

您可以通过传递无效参数来触发未定义的行为,例如:

  • 空指针
  • 未初始化的指针
  • 指向已释放内存的指针,或指向已退出函数的堆栈位置的指针,或类似的指针
  • 一个完全有效的指针,但在指针指向的位置和它指向的已分配内存范围的末尾之间没有空字节

但在这种情况下,strcmp 绝对不保证其行为 - 它允许开始删除您的硬盘驱动器,或从您的电子邮件帐户发送垃圾邮件,或其他什么 - 所以它不会'不需要明确指出错误。 (事实上​​,在典型的 C 或 C++ 实现中,strcmp 真正可以检测和处理的唯一一种无效参数是空指针情况,您可以就像在调用 strcmp 之前轻松检查一样。因此错误指示器没有用。)

关于c++ - 如何检查 `strcmp`是否失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377297/

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