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

标签 c variables

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/

相关文章:

isset 形式 POST 值的 PHP 简写

C# 方法返回与 lambda 中的变量

jquery - 如何获取字段集图例的值并将该值传递到隐藏字段

c - %s 需要类型 'char *' ,但参数 2 的类型为 'int'

c - C 中的仿射密码无法正常工作

c - 为什么 Flex 程序会永远等待并且不打印任何内容?

c - 不知道如何使用 tcsetpgrp()

c - 在其他结构中使用结构。 C

java - Java中的变量默认值

c# - 如何找到一个值分配给哪个变量?