我想删除“sth”中的单元格:
char* a[200];
我应该怎么做?我尝试了这个,但它不起作用!
for(i=0;i<100;ti++)
{
if(strcmp(a[i],"sth")!=0)
temp[i]=a[i];
}
a=temp //not sure here
答案 0 :(得分:2)
您无法从此类数组中删除单元格。你可以将它设置为任意的东西,比如空字符串。
更难的方法是:
你可能想知道为什么这样的简单事情是如此复杂。原因是数组是存储器中的数据序列。它的工作方式就像一个有很多抽屉的局。你可以告诉程序什么放在抽屉里,但你不能真正摆脱它的一部分而不破坏整个局。所以你必须做一个新的。
答案 1 :(得分:2)
类似
j=0;
for(i=0;i<100;i++)
{
a[j]=a[i];
if(strcmp(a[i],"sth")) {
j++;
}else{
a[j]=0;
}
}
我没有释放内存,因为我不知道字符串来自哪里。如果字符串是用malloc分配的,那么它们应该被释放(如果没有在其他地方使用)