2013-04-29 45 views
0

我有两个多维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++; 
} 

请给我你的意见。

+3

您缺少'}'来编译代码。循环体中'i ++'的意图是什么? – tehlexx 2013-04-29 18:32:45

+0

''/ 0''更便携。 – n0741337 2013-04-29 18:36:03

+2

为什么地球上的'\ 0'会更便携? – jbr 2013-04-29 18:41:25

回答

1

这真的取决于很多事情。

字符串malloc'ed?如果他们是你应该free他们并将指针设置为NULL。然后当你通过清理好的数组时,你需要检查字符串是否为NULL,然后再做任何你需要做的事情。

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

事情是,你也可以做,它可能并不意味着你选择的东西太多。

编辑

我澄清一下。

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

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

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

区别在于C中指针和数组之间的关系,这不是微不足道的,请参阅here

+0

这些字符串是静态的。所以,如果我的第5个元素是重复的,并且使它为NULL,那么我的其他9个元素是否会改变? – user2333234 2013-04-29 18:51:55

+0

如果我将它分配给'\ 0'或NULL它抛出一个错误“赋值中的不兼容类型”请帮助。 – user2333234 2013-04-30 18:16:00

相关问题