具有字符数组,如字符成员[255].我怎样才能完全清空它而不使用循环呢?

char members[255];

我所说的"空"是指,如果它有一些值存储在其中,那么它就不应该在其中存储.例如,如果我执行strcat,则旧值不应保留

members = "old value";

//empty it efficiently
strcat(members,"new"); // should return only new and not "old value new"

推荐答案

使用

  memset(members, 0, 255);

一般来说

  memset(members, 0, sizeof members);

如果数组在作用域内,或者

  memset(members, 0, nMembers * (sizeof members[0]) );

如果只有指针值,那么nMembers是数组中的元素数.


当然,现在的要求已经从清除数组的一般任务变为纯粹重置字符串,memset是多余的,只需将第一个元素归零就足够了(如其他答案中所述).


编辑要使用memset,你必须使用include string.h.

C++相关问答推荐

Visual Studio和Codebocks中的不同输出

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

想了解 struct 指针和空指针转换

为什么这个C程序代码会产生以下结果?

是否定义了数组指针类型转换为指针类型?""""

如何在C中只使用一个带双方括号([i][j])访问语法的malloc来分配动态大小的2d数组?

仅在给定的大小和对齐方式下正确创建全局

为什么GDB/MI进程的FIFO循环中有read()阻塞

字符是否必须转换为无符号字符,然后才能与getc家族的返回值进行比较?

强制转换变量以在 struct 中蚕食

在C语言中,指针指向一个数组

如何使用libgpio(d)为Raspberry Pi编译C程序?

C";中的ANN运行时判断失败#2-变量outputLayer;周围的堆栈已损坏.运行后出错

生产者消费者计数器意外输出的C代码

为什么我无法访问C语言中的文件

如何在不更改格式说明符的情况下同时支持双精度和长双精度?

无算术运算符和循环的二进制乘法

&stdbool.h&q;在嵌入式系统中的使用

System V 消息队列由于某种原因定期重置

C 中类型说明符的顺序重要吗?