1

「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
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 に答える