如何清除'一串字符串?

时间:2014-11-17 13:45:59

标签: c pointers arrays

main(void)初始化之后:

char *params[MAXPARAMS] = {NULL};

params被传递给不同的函数。

如何在初始化期间“重置”数组(在其他一些函数存储字符串之后)?


编辑:params用作参数列表,因此在某些操作后可能无法完全填充。通过'重置'我的意思是:我希望数组中没有字符串值,就像你{em> Java 中的clear字符串数组一样,但保持相同的数组大小。

3 个答案:

答案 0 :(得分:1)

考虑到内存分配是按顺序完成的并且没有释放,我认为你需要检查memset()函数,如果你的目标是数组的值。请查看手册页here

否则,如果您希望与初始化时间位于同一位置,则可以free()分配的内存,并再次将变量设置为NULL

请澄清reset的意思。那么我们就能以击球的方式提供帮助。

答案 1 :(得分:0)

我认为你想做的就是这个,

for(i=0;i<MAXPARAMS;i++)
    memset(params[i],'\0',strlen(params[i]));

保持每个字符串的长度不变。

答案 2 :(得分:0)

如果params已分配字符串,请先释放分配

for (size_t i=0; i<MAXPARAMS; i++) free(params[i]);

将所有内容都恢复为NULL

for (size_t i=0; i<MAXPARAMS; i++) params[i] = NULL;
// or 
memset(params, 0, sizeof params);

建议合并:

for (size_t i=0; i<MAXPARAMS; i++) { 
  free(params[i]);
  params[i] = NULL;
}