C语言 你有一个简单的bzero例子吗?

xdnvmnnf  于 2023-05-16  发布在  其他
关注(0)|答案(4)|浏览(99)

我需要实现bzero,我已经阅读了手册,我在StackOverflow上看到了很多关于它的帖子,但我要求的是一个使用bzero的简单示例,我没有找到任何使用bzero而不是在C中的服务器/客户端中使用它的简单示例。
这是我的memset:

void *my_memset(void *b, int c, size_t len)
{
    char *pb;
    unsigned char car;

    if (b == NULL)
        return (NULL);
    pb = b;
    car = (unsigned char)c;
    while (len--)
    {
        *pb++ = car;
    }
    return (b);
}

void ft_bzero(void *s, size_t  n)
{
     ft_memset(s, 0, n);
}

看起来不错?

ogsagwnx

ogsagwnx1#

bzero()所做的就是memset一切为零。

myStruct_t * foo = malloc (sizeof(myStruct_t));
bzero(foo, sizeof(myStruct_t));
// All bytes of foo are now 0

这和打电话没什么区别

memset (foo, 0, sizeof(myStruct_t));

在引擎盖下,bzero()应该与此实现匹配...

void bzero(void * s, size_t n)
{
  char * c = s; // Can't work with void *s directly.
  size_t i;
  for (i = 0; i < n; ++i)
    c[i] = '\0';
}
6qftjkof

6qftjkof2#

最简单的例子:

char *test = malloc(256);

memset(test, 0, 256); // or bzero(test, 256);

这会将test的所有元素设置为零。

roejwanj

roejwanj3#

注意memset返回一个指针,而bzero不返回。因此,如果你想重新生成bzero(),这可能更像是:

void    ft_bzero(void *s, size_t n)
{
    unsigned char *ptr;

    while (n-- > 0)
        *ptr++ = 0;
}
fwzugrvs

fwzugrvs4#

最简单的例子:

void    ft_bzero(void *s, size_t n)
{
    size_t  i;

    i = 0;
    while (i < n)
    {
        ((char *)s)[i] = '\0';
        i++;
    }
}

相关问题