「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
このような配列からセルを削除することはできません。代わりに、空の文字列など、任意の値に設定できます。
より難しい方法は次のとおりです。
なぜこのような単純なことがこんなに複雑なのか不思議に思うかもしれません。その理由は、配列がメモリ内のデータのシーケンスであるためです。引き出しがたくさんあるビューローのように機能します。プログラムに引き出しに何を入れるかを指示することはできますが、局全体を破壊せずにその一部だけを取り除くことはできません。だからあなたは新しいものを作らなければなりません。
何かのようなもの
j=0;
for(i=0;i<100;i++)
{
a[j]=a[i];
if(strcmp(a[i],"sth")) {
j++;
}else{
a[j]=0;
}
}
文字列がどこから来たのかわからないので、ここでメモリを解放しませんでした。文字列がmallocで割り当てられた場合、それらを解放する必要があります(他の場所で使用されていない場合)