如果你有类似的话:
char buf[10];
需要创建一个类似的函数:
void pad(char* dest, const char* src, size_t destlen, size_t srclen);
因此pad(dest, "hello", 10, 5)
会产生"hello\0\0\0\0\0"
我不确定最有效的方法是使用gcc 4.x:
snprintf
然后bzero
?
operator<<
与setfill
和朋友然后memcpy
?
对于这种特殊情况,性能很重要。提前谢谢!
答案 0 :(得分:3)
memcpy
后跟memset
怎么样?
void pad(char* dest, const char* src, size_t destlen, size_t srclen)
{
memcpy(dest, src, srclen);
memset(dest + srclen, 0, destlen - srclen);
}
答案 1 :(得分:2)
您可以使用memcpy
和memset
之类的
void pad(char* dest, const char* src, size_t destlen, size_t srclen)
{
memcpy(dest, src, srclen);
memset(dest+srclen, '\0', dstlen - srclen);
}
当然,您还应该检查src
是否适合dst