如何清除C中的字符串向量?

如何清除C中的字符串向量?,c,arrays,pointers,matrix,C,Arrays,Pointers,Matrix,使用全局变量,如: params_vector[100][100] = {}; 是否可以“重置”或“清除”此数组中的值,使其从初始化时起相等?有很多例子使用char*arg[](其中arg[i]=NULL有效),但没有一个例子使用这样的“矩阵”。如果这是一个多维数组char,只需调用 #include <string.h> memset(params_vector, 0, sizeof params_vector); #包括 memset(params_向量,0,params_

使用全局变量,如:

params_vector[100][100] = {};

是否可以“重置”或“清除”此数组中的值,使其从初始化时起相等?有很多例子使用
char*arg[]
(其中
arg[i]=NULL
有效),但没有一个例子使用这样的“矩阵”。

如果这是一个多维数组
char
,只需调用

#include <string.h>

memset(params_vector, 0, sizeof params_vector);
#包括
memset(params_向量,0,params_向量的大小);

如果您只需要将每个字符串的第一个字节设置为0,那么使用
for
循环可能会更有效。

如果这是
字符的多维数组,您可以通过调用

#include <string.h>

memset(params_vector, 0, sizeof params_vector);
#包括
memset(params_向量,0,params_向量的大小);
如果只需要将每个字符串的第一个字节设置为0,则使用
for
循环可能更有效。

使用:

使用:


假设这是
字符的多维数组,例如

char params_vector[N][M];
对于N和M的某些值-您不需要
memset()
将整个值设置为“\0”;将每个字符串的第一个字符设置为“\0”就足够了:

for(size_t i = 0; i < N; i++) {
    params_vector[i][0] = '\0';
}

可以。

假设这是一个多维数组,由
字符组成,例如

char params_vector[N][M];
对于N和M的某些值-您不需要
memset()
将整个值设置为“\0”;将每个字符串的第一个字符设置为“\0”就足够了:

for(size_t i = 0; i < N; i++) {
    params_vector[i][0] = '\0';
}

很好。

它不是字符串向量。它是数组数组。谢谢!!!我不确定是哪一个。它不是字符串向量。它是数组数组。谢谢!!!我不确定哪一个是。你可能想解释一下为什么这在大多数当前的体系结构上都有效,但如果
参数向量
有非整数成员,它就不能完全移植。@chqrlie:OP提到了“字符串向量”和
char*arg[]
,我认为他/她说的是字符是合理的,是关于人物的!谢谢大家@Acorn:我的错,标题确实提到了字符串向量,这使得einpokulm的回答非常有效。@chqrlie:没问题!:-)事实上,如果不需要清除整个内存,而是将以null结尾的字符串长度设为零,那么einpokulm的答案是完美的。但是,由于OP询问返回到初始化状态(
={}
),因此需要清除整个区域。您可能想解释为什么这在大多数当前体系结构上都有效,但如果
参数向量
具有非整数成员,则无法完全移植。@chqrlie:因为OP提到“字符串向量”还有
char*arg[]
,我认为假设他/她在谈论角色是合理的。是的,是关于角色的!谢谢大家@Acorn:我的错,标题确实提到了字符串向量,这使得einpokulm的回答非常有效。@chqrlie:没问题!:-)事实上,如果不需要清除整个内存,而是将以null结尾的字符串长度设为零,那么einpokulm的答案是完美的。但是,由于OP询问是否返回到初始化状态(
={}
),因此需要清除整个区域。我在第一个参数和sizeof内使用了for和params_vector[I]。我不知道它也会起作用。谢谢!我在第一个参数和sizeof内使用了for和params_vector[I]。我不知道它也会起作用。谢谢!“\0”不是一个带有一个“L”的NUL的终止吗?理想的情况是重置,使其保持为空,并带有双'L'?如果我错了,请纠正我,“\0”是否真的与希望将其设为NULL相同?“\0”实际上也被称为NUL。其数值为0。但是-你不能用它来做指针。NULL是指您分配给指针的内容。。。并且它的数值也是0(无论如何在大多数平台上)。对于NUL来说,'\0'不是一个带有一个'L'的终止符吗?理想的情况是重置,使其保持为空,并带有双'L'?如果我错了,请纠正我,“\0”是否真的与希望将其设为NULL相同?“\0”实际上也被称为NUL。其数值为0。但是-你不能用它来做指针。NULL是指您分配给指针的内容。。。它的数值也是0(无论如何,在大多数平台上)。