web-dev-qa-db-ja.com

char *の部分文字列を取得する

たとえば、私はこれを持っています

char *buff = "this is a test string";

そして"test"を取得したいです。どうやってやるの?

132
user502230
char subbuff[5];
memcpy( subbuff, &buff[10], 4 );
subbuff[4] = '\0';

仕事が完了しました:)

199
Goz

部分文字列の位置と長さがわかっているとします。

char *buff = "this is a test string";
printf("%.*s", 4, buff + 10);

サブストリングを別のメモリー宛先にコピーしても同じことができますが、既にメモリー内にあるのでそれは合理的ではありません。

これは、ポインタを使用して不要なコピーを回避する良い例です。

80

<cstring>からchar* strncpy(char* dest, char* src, int n)を使用してください。あなたの場合は、次のコードを使用する必要があります。

char* substr = malloc(4);
strncpy(substr, buff+10, 4);

strncpy関数 に関する詳しい説明はこちら

61
Mihai Scurtu

strstrを使うことができます。コード例 はこちら

返される結果はnullで終了していないことに注意してください。

9
Milan

<string.h>からstrstr()を使うことができます

$ man strstr

7
Paul R