C memset - 优雅地添加一个null终止符

rus*_*net 2 c malloc memset

我按照如何memset char数组与空终止字符?使用C memsetapi 时添加空终止符.

代码有效; 由于null终止符,我不再在malloc'd char数组的末尾添加奇怪的内存中字符.

/* memset does not add a null terminator */
static void yd_vanilla_stars(size_t *number_of_chars, char *chars_to_pad)
{
    memset(chars_to_pad, 0, *number_of_chars+1);
    memset(chars_to_pad,'*',*number_of_chars);
}
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方式实现同​​样的目标?

Hol*_*Cat 7

你可以这样做:

memset(chars_to_pad, '*', *number_of_chars);
chars_to_pad[*number_of_chars] = '\0';
Run Code Online (Sandbox Code Playgroud)

另外,为什么number_of_chars是指针?