2016-05-12 6 views
2

unsigned charの配列の終わりをテストするにはどうすればよいですか?それは簡単だCHAR文字列で、私はちょうどunsigned charの配列の終わりをテストするには?

while (str[i] != '\0') 

か、単に

while (str[i]) 

ようしかし、動作しないと私は本当に理由を理解していないunsigned char型の配列を使用してテストを行うことができます。それは私がそれは完全にあなた次第です

BYTE* a = getB(); 
int i=0; 
while(a[i]!=0) 
{ 
    printf("%C", a[i]); 
    i++; 
} 

おかげ

+2

[このコードはきれいです](http://melpon.org/wandbox/permlink/xoN2so1dCSsRfbM0)。 「うまくいかない」とはどういう意味ですか? [最小限の、完全で検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。 – MikeCAT

+3

できません。期間。 –

+2

* CまたはC++のいずれかを選択してみませんか? – MikeCAT

答えて

8

を助けが必要な例です。

つまり、は、配列の末尾の意味を定義します。

従来、文字配列の終わりは「ヌルバイト」であり、終端位置を示しています。 unsigned charの配列では、それを行うことができない理由はありません。

charの場合と同様に、必ずしもそうである必要はありません。配列の要素を数える(サイズを指定する)か、他の文字が最後のものであることを宣言することによって、配列の終わりを示すことができます。

私はそれが何であるかはわかりません。データを作成した人(ここでは、)は、これを行うことができます。

したがって、配列を渡したライブラリのドキュメントを参照するか、メモリにアクセスしてください。 :)

+2

ちょうど私の記憶に到達し、segfaultを得ました。私はアルバカーキでそのポインタを初期化しておくべきであることを知っていた。 – user4581301

+0

https://en.wikipedia.org/wiki/Sentinel_value –

1

@eugeneshです。あなたはそれをすることはできません。最後に余分なスペースを入れ、何らかの区切り文字を追加するか、または文字数を維持する必要があります

関連する問題