【问题标题】:Is there anyway to check the success of the str functions?无论如何要检查 str 函数的成功吗?
【发布时间】:2012-10-21 10:21:24
【问题描述】:

我正在查看strcpy()strcat() 的手册。似乎没有办法评估函数调用的“成功”。 (即返回值永远不会是NULL),对吗?

只是假设如果您遵循这些函数的输入规则,则输出将是有效的?只是想确保我在这里没有遗漏任何东西……

【问题讨论】:

    标签: c string strcpy strcat


    【解决方案1】:

    这些函数不能以任何明确定义的方式失败。它们要么成功,要么出现严重错误(例如,缺少 0 个字符或输出缓冲区太小),任何事情都可能发生。

    【讨论】:

      【解决方案2】:

      因为我不认为像这样的函数真的有办法知道什么是“成功”。例如,strcpy 实际上只是 memcpy。所以就 C 而言,它只是从一个内存位置获取数据并将其复制到另一个内存位置。它不知道数据应该是什么样子,或者以您期望的方式格式化。我想你知道是否成功的唯一真正方法是你是否最终得到一个段错误。

      【讨论】:

        【解决方案3】:

        只要您没有调用未定义的行为,这些函数就可以保证工作。特别是,需要分配您正在写入的内存。除了让你的程序崩溃之外,他们真的没有办法失败。

        一般来说,因为很难判断将写入多少字节,所以不鼓励使用这些函数。如果可以,请使用strncpystrncat

        【讨论】:

        • n 是否应该为空终止符包含空格?
        • @MansoorAhmedMemon 更新了正确参考的链接。奇怪的是,cplusplus.com 有时不完整。
        猜你喜欢
        • 1970-01-01
        • 2022-12-14
        • 2019-01-09
        • 2019-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多