gpt4 book ai didi

c - 使用 memset() 并解释函数的 size_t 数字

转载 作者:行者123 更新时间:2023-11-30 15:21:57 25 4
gpt4 key购买 nike

我正在尝试破译使用memset()的代码块。以下是我试图破译的内容。

memset(buffer, 0, strlen(argv[1]) - 4);

以我对memset函数的理解,就是用“0”的值填充“buffer”的内存块,并返回argv[1] -4中存储的字符串大小.有人可以解释一下argv[1] -4吗?

据我了解,argv[1] 是第一个要设置到缓冲区中的数组。

我使用了 this 中的资源网站。

最佳答案

来自man pagememset() 的语法是

void *memset(void *s, int c, size_t n);

对应的描述是

The memset() function fills the first n bytes of the memory area pointed to by s with the constant byte c.

所以,根据代码,

memset(buffer, 0, strlen(argv[1]) - 4);

memset function, it is to fill the block of memory of "buffer"

with the value of "0"

对。不过,它是 0,而不是 "0"

and return the size of the string stored in "argv[1] -4 "

不。 memset() 的第三个参数是要使用作为第二个参数提供的值填充的内存大小或数量(以字节为单位) .

为了清晰和可读,我们可以重写如下

memset( buffer , 0 , (strlen(argv[1]) - 4) );

也就是说,strlen(argv[1]) - 4 给出了 argv[1] 所保存的字符串的长度,减去由4。正如我的 @Paul R 先生非常正确地建议的那样,这种逻辑很可能用于表示不带扩展名/后缀的文件名(省略最后 4 个字符)输入字符串的)。

关于c - 使用 memset() 并解释函数的 size_t 数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29411989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com