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
字符终止字符串。
如果您想清除它,您可以按照其他答案的建议进行操作。我建议将 strncpy
或 strlcpy
与@codaddict 建议的空字符串一起使用。那是最明显地说“嘿,我想清除那个字符串”的代码。如果您想从内存中删除字符串的全部内容(例如,如果它包含密码或类似的东西),请按照@Ken 和@Tom 的建议使用memset
。
另请注意,您永远不会使用strcpy
或strcat
等不接受输出缓冲区大小作为参数的函数.这些确实不安全,会导致严重的错误和安全漏洞。如果您知道不会出错,甚至不要使用它们,只需养成使用安全功能的习惯。
关于c - 如何清除 C 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831191/