1

我想删除其中有“某事”的单元格:

char* a[200];

我该怎么做?我试过这个,但它不起作用!

for(i=0;i<100;ti++)
{

 if(strcmp(a[i],"sth")!=0)
    temp[i]=a[i];
}
a=temp  //not sure here
4

2 回答 2

2

您不能像这样从数组中删除单元格。您可以将其设置为任意值,例如空字符串。

更难的方法是:

  • 计算要删除的项目
  • 创建一个新的更小的数组
  • 将您需要的项目从旧数组复制到新数组
  • 删除旧的。

您可能想知道为什么像这样简单的事情会如此复杂。原因是数组是内存中的数据序列。它就像一个有很多抽屉的办公室。你可以告诉程序把什么放在抽屉里,但你不能真正摆脱它的一部分而不破坏整个局。所以你必须做一个新的。

于 2012-08-10T09:50:47.237 回答
2

就像是

j=0;
for(i=0;i<100;i++)
{
    a[j]=a[i];
    if(strcmp(a[i],"sth")) {
     j++;
    }else{
     a[j]=0;
    }
}

我没有在这里释放内存,因为我不知道字符串是从哪里来的。如果字符串是用 malloc 分配的,它们应该被释放(如果没有在其他地方使用)

于 2012-08-10T09:51:13.560 回答