Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';这是在C+;中构造带空固定长度字符的左填充数组的最有效方法+;?_C++_Linux_Gcc_Low Level - Fatal编程技术网

C++ 什么';这是在C+;中构造带空固定长度字符的左填充数组的最有效方法+;?

C++ 什么';这是在C+;中构造带空固定长度字符的左填充数组的最有效方法+;?,c++,linux,gcc,low-level,C++,Linux,Gcc,Low Level,如果您有以下情况: 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” 我不确定最有效的方法是使用gcc 4.x: snprintf然后bzero operator那么memcpy后跟memset怎么样 void pad(char* dest, const char*

如果您有以下情况:

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”


我不确定最有效的方法是使用gcc 4.x:

snprintf
然后
bzero


operator那么
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);
}

那么
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);
}

您可以像这样使用
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
您可以使用
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

“我不确定这样做最有效的方法是什么。”尝试两种方法,看看哪一种更快?“我不确定这样做最有效的方法是什么。”两个都试一下,看看哪一个更快?你比我快50秒:你比我快50秒:汉克斯,我会确定这些的基准,但我同意这是实现这一点最直接的方法。谢谢,我会确定这些的基准,但我同意,这将是实现这一目标最直接的方式。