web-dev-qa-db-ja.com

開始インデックスと終了インデックスを指定すると、Cの文字列の一部をどのようにコピーできますか?

Cでは、文字列が部分的にのみコピーされるように(開始インデックスから終了インデックスまで)、開始インデックスと終了インデックスを使用して文字列をコピーするにはどうすればよいですか?

これは 'C string copy' strcpyに似ていますが、開始インデックスと終了インデックスがあります。

23
Josh Morrison

strncpy をチェックしましたか?

char * strncpy(char * destination、const char * source、size_t num);

beginおよびendは実際にnumある場所から別の場所にコピーされるバイト。

17
karlphillip

strncpy を使用します

例えば.

_strncpy(dest, src + beginIndex, endIndex - beginIndex);
_

これは、あなたが

  1. destが十分に大きいことを検証しました。
  2. endIndexbeginIndexより大きい
  3. beginIndexstrlen(src)より小さい
  4. endIndexstrlen(src)より小さい
54
Binary Worrier

memcpy を使用するだけです。

宛先が十分に大きくない場合、- strncpy はnullで終了しません。宛先がソースと比較して大きい場合、- strncpy は、文字列の後に宛先をヌルで埋めます。 strncpy は無意味であり、文字列のコピーには適していません。

strncpymemcpy に似ていますが、ソースにあるものが見つかると宛先をヌルで埋めます。文字列操作にはまったく役に立ちません。 0の埋め込みレコードで修正されます。

7
user1831086