-4

我需要实现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);
}

看起来不错?

4

3 回答 3

0

所做的就是将所有bzero()内容都设置为零。

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';
}
于 2015-03-21T13:02:55.657 回答
0

最简单的例子:

char *test = malloc(256);

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

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

于 2015-03-21T13:06:16.523 回答
0

请注意,当 bzero 不返回时, memset 返回一个指针。因此,如果您想重现 bzero(),这可能更像是:

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

    while (n-- > 0)
        *ptr++ = 0;
}
于 2021-10-08T11:07:48.550 回答