有像char成员一样的字符数组[255].如何在不使用循环的情况下完全清空它?
char members[255];
Run Code Online (Sandbox Code Playgroud)
通过"空"我的意思是,如果它有一些存储在其中的值,那么它不应该.例如,如果我执行strcat,则不应保留旧值
members = "old value";
//empty it efficiently
strcat(members,"new"); // should return only new and not "old value new"
Run Code Online (Sandbox Code Playgroud)
Ste*_*ham 144
运用
memset(members, 0, 255);
Run Code Online (Sandbox Code Playgroud)
一般来说
memset(members, 0, sizeof members);
Run Code Online (Sandbox Code Playgroud)
如果数组在范围内,或
memset(members, 0, nMembers * (sizeof members[0]) );
Run Code Online (Sandbox Code Playgroud)
如果只有指针值,则nMembers是数组中元素的数量.
编辑当然,现在要求已经从清除数组的一般任务变为纯粹重置字符串,memset是过度的,只是将第一个元素置为零(如其他答案中所述).
编辑为了使用memset,你必须包含string.h.
Fel*_*lix 33
取决于'空'的意思:
members[0] = '\0';
Run Code Online (Sandbox Code Playgroud)
如果您正在处理字符串,请不要费心尝试将 char 数组清零。下面是处理字符字符串的简单方法。
复制(分配新字符串):
strcpy(members, "hello");
Run Code Online (Sandbox Code Playgroud)
连接(添加字符串):
strcat(members, " world");
Run Code Online (Sandbox Code Playgroud)
空字符串:
members[0] = 0;
Run Code Online (Sandbox Code Playgroud)
就这么简单。
编辑:鉴于对问题的最新编辑,这将不再有效,因为没有空终止 - 如果您尝试打印数组,您的字符后会跟随一些非人类可读的字符。但是,我将这个答案留在这里作为子孙后代的社区维基。
char members[255] = { 0 };
Run Code Online (Sandbox Code Playgroud)
那应该工作。根据 C 编程语言:
如果数组有固定大小,初始化器的数量不能超过数组的成员数;如果数量较少,则其余成员初始化为 0。
这意味着数组的每个元素的值都是 0。我不确定这是否是您认为“空”的,因为 0 是 a 的有效值char。