我有两个多维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++;
}
请给我你的意见。
答案 0 :(得分:1)
这真的取决于很多事情。
字符串malloc
是否已编辑?如果他们是你应该free
他们并将指针设置为NULL。然后当你传递清理过的数组时,你需要检查字符串是否为NULL
,然后才能执行你需要做的事情。
如果字符串是静态的,或者您不想释放它们,因为它们在其他地方使用,那么您可以将它们设置为NULL
或'\0'
。如果您选择更晚的版本,则应检查strlen(s) == 0
或s[0] == '\0'
。
问题是,你可以做任何一种,它可能并不意味着你选择的很多。
修改强>
我会澄清一点。
你需要做什么取决于你是否有char
的数组(以'\ 0'结尾)或指向字符串的指针数组。
在第一种情况下,如果要“删除”字符串,可以将数组中的所有字符更改为“\ 0”,或仅更改第一个字符。并使用strlen
或`s [0] =='\ 0'来确定字符串是否为空。
在第二种情况下,您应该释放指针,并将其设置为NULL
。要检查字符串是否为“空”,请测试NULL
。
区别在于C中指针和数组之间的关系,这不是一件容易的事,请参阅here。