如何清除Char数组中的特定元素

时间:2013-04-29 18:29:08

标签: c

我有两个多维char数组。他们可能有重复。我想在第二个中清除重复项。将第二个数组中的特定元素分配给NULL,清除它或者我应该将它分配给“/ 0”。

for(i=0; i<10; i++){
   for(j=0; j<10; j++){
      if(!strcmp(a[x][i], b[x][j])){
      b[x][j]=NULL;
   }
   i++;
}

请给我你的意见。

1 个答案:

答案 0 :(得分:1)

这真的取决于很多事情。

字符串malloc是否已编辑?如果他们是你应该free他们并将指针设置为NULL。然后当你传递清理过的数组时,你需要检查字符串是否为NULL,然后才能执行你需要做的事情。

如果字符串是静态的,或者您不想释放它们,因为它们在其他地方使用,那么您可以将它们设置为NULL'\0'。如果您选择更晚的版本,则应检查strlen(s) == 0s[0] == '\0'

问题是,你可以做任何一种,它可能并不意味着你选择的很多。

修改

我会澄清一点。

你需要做什么取决于你是否有char的数组(以'\ 0'结尾)或指向字符串的指针数组。

在第一种情况下,如果要“删除”字符串,可以将数组中的所有字符更改为“\ 0”,或仅更改第一个字符。并使用strlen或`s [0] =='\ 0'来确定字符串是否为空。

在第二种情况下,您应该释放指针,并将其设置为NULL。要检查字符串是否为“空”,请测试NULL

区别在于C中指针和数组之间的关系,这不是一件容易的事,请参阅here