我正在尝试实现 Perl 的等效版本chomp()
C 中的函数,我遇到了一个极端情况,其中作为参数传递的字符串文字将导致分段错误(理所当然)。
Example chomp("some literal string\n");
C99 中是否有一种定义的方法来检测我的函数是否传递了字符串文字,以便我可以return
而不尝试将其取消?
char* chomp(char *s)
{
char *temp = s;
if (s && *s)
{
s += strlen(s) - 1;
if (*s == '\n')
{
*s = '\0';
}
}
return temp;
}
C99 中是否有一种定义的方法来检测我的函数是否传递了字符串文字,以便我可以返回而不尝试将其 NUL 出来?
你不应该。
你的 API 不应该试图为调用者捏造东西,只会让它在以后崩溃。如果来电者违反了规则,他们应该当场发现。
如果调用者将不可变字符串传递给需要可变字符串的函数,则它should段错误。其他任何东西都是糟糕的设计。
(附录:当然,最好的设计是返回调用者负责释放的字符串的副本。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)