gpt4 book ai didi

c - 如何清除 C 中的数组?

转载 作者:太空狗 更新时间:2023-10-29 15:47:06 25 4
gpt4 key购买 nike

char x [1000];
x = 'hello';

我要用什么来清除x的内容?我无法重新初始化它,请使用 strcpy(x, '/0')free()

最佳答案

您不能将任何内容分配给变量 x 所在的数组。因此,以 x = 开头的任何内容都是错误的。其次,'hello' 不是字符串,它是一个int 类型的多字 rune 字,所以这也没有意义。字符串文字包含在 " 中,而字符(或多字符)文字包含在 ' 中。

因此,如果您想用字符串“hello”填充缓冲区 x,您可以使用 strncpy 或更好的 strlcpy(如果可用):

 strncpy( x, "hello", sizeof( x ) );
strlcpy( x, "hello", sizeof( x ) );

strlcpy 函数更好,因为它总是以 nul 字符终止字符串。

如果您想清除它,您可以按照其他答案的建议进行操作。我建议将 strncpystrlcpy 与@codaddict 建议的空字符串一起使用。那是最明显地说“嘿,我想清除那个字符串”的代码。如果您想从内存中删除字符串的全部内容(例如,如果它包含密码或类似的东西),请按照@Ken 和@Tom 的建议使用memset

另请注意,您永远不会使用strcpystrcat 等不接受输出缓冲区大小作为参数的函数.这些确实不安全,会导致严重的错误和安全漏洞。如果您知道不会出错,甚至不要使用它们,只需养成使用安全功能的习惯。

关于c - 如何清除 C 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831191/

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