我认为通过将第一个元素设置为null,可以清除char数组的全部内容.

char my_custom_data[40] = "Hello!";
my_custom_data[0] = '\0';

但是,这只将第一个元素设置为NULL.

my_custom_data[0] = 0; 

我认为上面的两个例子应该清除所有的数据,而不是使用memset.

推荐答案

这取决于您希望如何查看array.如果将数组视为一系列字符,那么清除数据的唯一方法就是touch 每个条目.memset可能是实现这一目标最有效的方法.

另一方面,如果您 Select 将其视为以C/C++NULL结尾的字符串,则将第一个字节设置为0将有效地清除该字符串.

C++相关问答推荐

错误:八进制常数中的数字9无效

Bison解析器转移/减少冲突

无效使用未定义类型'structsquare'?

找出文件是否包含给定的文件签名

如何一次获取一个字符

将指针作为参数传递给函数

如何在不使用其他数组或字符串的情况下交换字符串中的两个单词?

是什么让numpy.sum比优化的(自动矢量化的)C循环更快?

将 struct 传递给函数

在Apple Silicon上编译x86的Fortran/C程序

FRIDA-服务器成为端口扫描的目标?

I2C外设在单次交易后出现故障

将字符串数组传递给C中的函数:`str[dim1][str_size]`vs`*str[dim1]`

当内存来自Malloc时,将char*转换为另一个指针类型是否违反了严格的别名规则?

C11/C17标准允许编译器清除复合文字内存吗?

从BIOS(8086)中读取刻度需要多少?

GetText不适用于包含国际字符的帐户名称

在C中,为什么这个带有递增整数的main函数从不因溢出而崩溃?

无法将字符串文字分配给 C 中的字符数组

clion.我无法理解 Clion 中发生的 scanf 错误