gpt4 book ai didi

c - 如何清除C中数组的所有元素?

转载 作者:行者123 更新时间:2023-12-04 09:28:33 26 4
gpt4 key购买 nike

volatile static uint8_t buffer[16];
void ResetBuffer(){
for(int i=strlen((char*)buffer);i>=0;i--) buffer[i]='\0';
}

缓冲区变量必须始终在微 Controller 中使用,所以我使用了 volatile static 并且它是全局变量。
但是,为了清除所有缓冲区,这样编码是否正确?如果有错误或者有其他简单的代码,请给我一些简单的代码。

我听说如果我想说清楚,那么将第一个元素设为空会更容易。像这样:buffer[0] = '\0';
但是,当我这样编码时,仍然保留了其他元素。

我知道这是一个非常简单的问题。
但我很困惑。我通常用 C++ 或 Java 编程,所以用 C 编程对我来说很困惑。

最佳答案

您对 strlen() 的使用是错误的,它依赖于缓冲区的内容是一个有效的字符串;它不会清除整个缓冲区。

只需使用 memset()sizeof :

memset(buffer, 0, sizeof buffer);

请注意 sizeof不是函数,因此对于此类情况,不需要(或我认为应该使用)括号。

如果您的 C 库不包含 memset() ,当然可以使用普通循环:
for(size_t i = 0; i < sizeof buffer; ++i)
buffer[i] = 0;

如果您只想清除使用的部分,并且知道它是一个有效的字符串,那么您的代码当然可以工作。我可能不会使用向后循环,因为我觉得这不直观,但这就是我。

注意:如果此缓冲区用于字符串,则应将其更改为类型 char , 不是 uint8_t .

关于c - 如何清除C中数组的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32398192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com