2016-07-28 5 views
0

と仮定char *data = "02001110000000000"読む四つの要素

私は別の文字列に最初の4つの要素 0200のみを移動することができますどのように

+3

あなたはそれを研究しましたか? –

+1

C++を使用している場合、なぜ文字列ではなくchar配列を使用したいのですか? – Lehu

答えて

2

あなたはstrncopyを使用することができます。

char *data = "02001110000000000" 
char dest[4]; 
strncopy(dest, data, 4); 

ので、ここでdestが文字列でないstrncopyがNULL終端文字('\0')をコピーしないことに注意してください、それは4つのchar sの配列だけです。文字列 "0200"にしたい場合は、5要素の配列として定義し、'\0'文字を自分で追加する必要があります。

+1

'char * data =" 02001110000000000 "'はC++では不正です – Slava

+0

@Slavaこれは推奨されていませんが、違法ではありません。それは 'const char *'でなければなりません – CJxD

+1

@CJxDこれはC++ 03で廃止されました。現在は違法です – Slava

0

新しいアレイに文字をコピーする必要がないと仮定すると(つまり、割り当てられた同じメモリを再利用することができます)、これを行うにはちょっとしたポインタを使うことができます。

配列は、最初の要素へのポインタに過ぎません。

char firstFour[4] = &data[0]; 
or 
char *firstFour = &data[0]; 

data = &data[4]; 
0

のchar * NEWARRAY =新たなチャーを行い、第一の配列からの要素を削除する[4]。

memcpy(newArray、data、4);

+0

Ups、 '\ 0'の終了はどうですか? –

関連する問題