反正有没有检查str函数的成功?

时间:2012-10-31 20:15:24

标签: c string strcpy strcat

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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