【解決方法】文字列の途中で null を出力する方法は?

プログラミングQA


やあみんな。
文字列の途中にヌル文字を出力するにはどうすればよいですか?また、これが文字列の末尾のヌル文字ではないことをプログラムに伝えるにはどうすればよいですか?

文字列の文字を1文字ずつ出力したいのですが、途中でnullになると終了してしまいます。
印刷不可能な文字を受け取り、それを関数に渡して、その印刷不可能な文字の 16 進値を印刷します。

私が試したこと:

char	i;
	char	j;

    char chars[] = "0123456789abcdef";
	i = chars[c / 16];
	j = chars[c % 16];
	write (1, "\\", 1);
	write (1, &i, 1);
	write (1, &j, 1);

解決策 1

ほとんどの場合、できません。C では、null 文字は文字列ターミネータと見なされます。ヌル文字に遭遇すると、文字列の末尾がマークされます。

データにヌルを含めたい場合は、使用する必要があります unsigned char データ型、および次のような「文字列ベースのショートカット」を使用しようとしない:

char chars[] = "0123456789abcdef";

配列の末尾に null を追加するためです。

私はおそらく使用をお勧めします #define 明確にするために:

C
#define byte unsigned char
...
   byte data[noOfBytesNeeded];

次に、データを値の配列として扱い、システムを文字列と見なすように入力するのではなく、それぞれを文字として個別に出力します。

ただし、ヌル文字 ‘\0’ はまったく何も出力されないことに注意してください。C 仕様では制御文字として定義されているため、前後の文字の間にギャップやスペースが含まれていても印刷できません。 それを「見る」ことができるのは、それをファイルに出力し、16 進エディタを使用してファイル データを調べる場合だけです。

これが必要だと思うことは何をしようとしていますか?

コメント

タイトルとURLをコピーしました