我有两个多维char数组。他们可能有重复。我想清除第二个中的重复项。将第二个数组中的特定元素赋值为NULL,将其清除,或者将其分配给“/ 0”。如何清除Char数组中的特定元素
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++;
}
请给我你的意见。
我有两个多维char数组。他们可能有重复。我想清除第二个中的重复项。将第二个数组中的特定元素赋值为NULL,将其清除,或者将其分配给“/ 0”。如何清除Char数组中的特定元素
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++;
}
请给我你的意见。
这真的取决于很多事情。
字符串malloc
'ed?如果他们是你应该free
他们并将指针设置为NULL。然后当你通过清理好的数组时,你需要检查字符串是否为NULL
,然后再做任何你需要做的事情。
如果字符串是静态的,或者如果您不想释放它们,因为它们在其他位置使用,则可以将它们设置为NULL
或'\0'
。如果您选择较晚,那么您应该检查strlen(s) == 0
或s[0] == '\0'
。
事情是,你也可以做,它可能并不意味着你选择的东西太多。
编辑
我澄清一下。
你需要做什么取决于你是否有一个char
(它是'\ 0'结尾)的数组或者是一个指向字符串的指针数组。
在第一种情况下,如果要“删除”一个字符串,可以将数组中的所有字符更改为'\ 0',或者只更改第一个字符。并使用strlen
或's [0] =='\ 0'来确定字符串是否为空。
在第二种情况下,您应该释放指针,并将其设置为NULL
。要检查字符串是否为“空”,请测试NULL
。
区别在于C中指针和数组之间的关系,这不是微不足道的,请参阅here。
这些字符串是静态的。所以,如果我的第5个元素是重复的,并且使它为NULL,那么我的其他9个元素是否会改变? – user2333234 2013-04-29 18:51:55
如果我将它分配给'\ 0'或NULL它抛出一个错误“赋值中的不兼容类型”请帮助。 – user2333234 2013-04-30 18:16:00
您缺少'}'来编译代码。循环体中'i ++'的意图是什么? – tehlexx 2013-04-29 18:32:45
''/ 0''更便携。 – n0741337 2013-04-29 18:36:03
为什么地球上的'\ 0'会更便携? – jbr 2013-04-29 18:41:25