char x [1000];
x = 'hello';
.....
clear contents of x???
我用什么来清除X?我无法重新初始化它,请使用strcpy(x,“/0”)或free()。
最佳答案
不能将任何内容赋给数组,变量x
就是数组。因此,任何以x =
开头的东西都是错误的。其次'hello'
不是字符串,它是int
类型的多字符文本,所以这也没有意义。字符串文字由"
括起来,而字符(或多字符)文字由'
括起来。
因此,如果您想用字符串“hello”填充缓冲区x
,请使用strncpy
或更好的strlcpy
(如果可用):
strncpy( x, "hello", sizeof( x ) );
strlcpy( x, "hello", sizeof( x ) );
strlcpy
函数更好,因为它总是用nul
字符结束字符串。如果你想澄清,你可以按照其他答案的建议去做。我建议使用
strncpy
或strlcpy
和@codadict建议的空字符串。这是最明显的代码“嘿,我想清除这个字符串”。如果要从内存中删除字符串的全部内容(例如,如果它包含密码或类似的内容),请使用@ken和@tom建议的memset
。还请注意,您从未使用过不接受输出缓冲区大小作为参数的函数,如
strcpy
或strcat
。这些真的不安全,会导致严重的错误和安全漏洞。如果你知道什么都不会出错,甚至不要使用它们,只要养成使用安全功能的习惯。