0

charC で文字列 (char 配列) から最初のものを削除するには、非常に安価なアルゴリズム (プロセッサとメモリ) を作成する必要があります。

私は現在使用しています:

char *newvalue = strdup(value+1);
free(value);
value = newvalue;

しかし、それを行うためのより安価な方法があれば知りたいです。文字列valueは動的に割り当てられます。

4

3 に答える 3

5

value+1char*最初の文字が削除された文字列を表す です。そのような文字列を取得するための安価な方法です..

ただし、メモリを解放するときは、シフトされたポインターではなく元のポインターを解放するように注意する必要があります。

于 2014-01-09T16:06:40.080 に答える
3

元の配列を再利用します。メモリ (デ) 割り当てとコピーの相対的な速度に応じて、高速になる場合とそうでない場合があります。

int size = strlen(value);
if (size > 0) memmove(value, value+1, size);
于 2014-01-09T16:09:36.500 に答える