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字符结束字符串。
如果你想澄清,你可以按照其他答案的建议去做。我建议使用strncpystrlcpy和@codadict建议的空字符串。这是最明显的代码“嘿,我想清除这个字符串”。如果要从内存中删除字符串的全部内容(例如,如果它包含密码或类似的内容),请使用@ken和@tom建议的memset
还请注意,您从未使用过不接受输出缓冲区大小作为参数的函数,如strcpystrcat。这些真的不安全,会导致严重的错误和安全漏洞。如果你知道什么都不会出错,甚至不要使用它们,只要养成使用安全功能的习惯。

07-26 07:11