まず、unsigned char*
タイプの記号が格納されている機能があります。たとえば、Abcdef!?
の場合は、Unicodeの符号あたり2バイト、[65 0] [98 0] [99 0] [100 0] [101 0] [102 0] [33 0] [63 0]
です。なぜprintfは最初の文字だけを表示しますか?
for(unsigned char i=0; i<17; i++) printf("%c", pointer[i]);
を使用すると、すべてが問題なく表示され、Abcdef!?
と表示されます。しかし、私がprintf("%s" pointer);
を使うと、私にはA
と他には何も与えません。理由を教えてください。
2番目の値は0で、 'unsigned char *'配列型です: 'printf'が停止します。あなたは私たちに[mcve]を教えてもらえますか? –
これらの '0'バイトをすべて表示しますか? '%s'はc-stringを出力するためのもので、nullで終了します。 * Null Terminated Byte String *と呼ばれます。したがって、最初の '0'バイトの前の最初の文字だけを取得し、それ以上読み取ろうとするのを止めます。 – BoBTFish
「Unicodeシステム」と言うと、UTF-16などの意味ですか? Unicode自体はエンコーディングではなく、数字と文字のマッピングに過ぎません。 –