2012-12-02 15 views

答えて

9

strncmp("ADD", buffer, 3)のように、どのように文字配列のスライスを取ることができますか?

「スライス」の意味はわかりませんが、buffer内のポインタはスライスと見なすことができます。たとえば、buffer"ADD"で始まる文字列の場合、char *slice = buffer + 3は同じ文字列で"ADD"が削除されています。 slicebufferの一部であり、sliceの内容を変更するとbufferの内容が変更されます。そして、他の方法でラウンド。

"スライス"とは、独立したコピーを意味する場合は、新しいメモリブロックを割り当て、興味のある部分をbufferからメモリにコピーする必要があります。これにはライブラリ関数strdupstrndupが便利です。

+0

がどのように1は、元の文字列よりも短いオフセットと終了を指定することができ、テストするための変数でありますか? "hello" + 1サイズ3( "ell")のように。それは私が信じるスライスの意味です。幸いにもstrncmpとprintfはこれを扱うオプションを提供していますが、これを文字列として表示するのはうまくいくでしょう。 – scape

+0

@scape「Cの文字列から部分文字列を取り出す方法」(https://stackoverflow.com/questions)を参照してください。/19555434) – kmkaplan

+0

"strtokは通常、区切り文字を入力を「食べる」ように '\ 0'に置き換えます。明らかにいくつかの欠点がある。 – scape

8

使用strncmp .Assumingバッファがちょうど

strncmp (buffer,"ADD",3); 
関連する問題