【发布时间】:2015-09-01 15:10:24
【问题描述】:
我正在使用 C。对于这个例子,假设 char buf 将始终以“,”结尾(我无法控制)并且我们总是希望截断最后两个字符(例如删除“,” )。还假设它不会超过 128 个字符。下面的代码安全吗(有这些假设)?
char buf[128];
sprintf(buf, "Item One, Item Two, Item Three, Item Four, ");
int len = strlen(buf);
if (len > 2)
{
// We know it's greater than 2, lop off the last two characters
buf[len - 2] = '\0';
}
如果这不安全,那么截断空终止字符数组的最后几个字符的最佳方法是什么?
【问题讨论】:
-
这是一种非常常见的技术。多字节字符集可能会使其不安全,但您不会使用
strlen()。 -
好点。在这种情况下,它不会使用 Unicode。
-
建议
size_t len而不是int len。也就是strlen()返回的类型。
标签: c