C言語の文字列終端文字「\ 0」

入門

キャラクタ・タイプと対応する文字なので、書き込みがないので、「\ 0」は8 00000000です。「\ 0」マーク文字列の末尾います。

「\ 0」文字は、これは文字0が、ヌル文字ではないことをコンパイラに伝えるために、平均値に翻訳されます。ヌル文字\ 0がバイナリで00000000に対応し、番号0〜00110000まで

これは、文字列を格納するために、C言語では、通常の文字列をその具体的な文字列変数を判明ません。文字列は「\ 0」は常に文字列の終端としてあります。このように、アレイに文字列、およびエンド文字「\ 0」は、アレイ内の、文字列の終わりかどうかを示すフラグとして格納されます。フラグの後に「\ 0」で、文字列の長さの文字列の長さを決定する必要はありません。

説明

文字列配列に割り当てられた:U8のSTR1 [] = { " cxjr.21ic.org "};
実際には、実際の状況は、メモリアレイ0009に格納されている:
1 2 ... cxjr ORG ICは、 '\ 0'は
、この後ろに「\ 0」が自動的にCコンパイラによって追加されます。システム自体によって初期値列の配列の長さ、及び処理を指定することが必要です。
str2の中の文字列にコピーされた文字配列str1の文字列。マーク文字列の末尾に「\ 0」も一緒にコピーされます。

ケース

  1. 場合は、配列の長さは十分ではありません。我々のような、配列の長さを指定すると仮定:= {「[13] U8のSTR1 cxjr.21ic.org」};
    情報の裏面が失われるので、バースト長は、STR1 13であるので、すなわち、 『\ 0』失われました。

  2. 所与のアレイの割り当てであれば、個々の文字のそれぞれは、引用符で囲みます。それは、「0 \」失われます。
    ''。 '' U8のSTR1 [] = { 'C'、 'X'、 'J'、 'R&LT' ,, '2'、 '1' 、 'I'、 'C' ,,' O 「」R「」G 『};
    あなたは配列にしたい場合は』 \ 0「末端、以下は3のいずれかに書くことができます。

u8 str1[]={"cxjr.21ic.org"}; //字符串赋值
u8 str1[]={'c','x','j','r','.','2','1','i','c','.','o','r','g','\0'}; //人工添加
u8 str1[14]={'c','x','j','r','.','2','1','i','c','.','o','r','g'}; //故意给数组预留一个空位

コード例

#include<stdio.h>
int main() {
	char s1[] = "test";
	char s2[10] = "test";
	char s3[4] = "test";
	char s4[] = { 't','e','s','t' };
	printf(s1);
	printf("\n");
	printf(s2);
	printf("\n");
	printf(s3);
	printf("\n");
	printf(s4);
	printf("\n");
	return 0;
}

検証結果


あなたは、出力の奇妙な文字列を見ることができます

デバッギング


そこ「\ 0」S1とS2からは「\ 0」がないので、それは、このビットが検出され表示されたときには、プログラムを終了し、あるS3およびS4におけるさまざまな理由のため、タスクの終了は、正常にできません

ソリューション

次のように内容を変更することができます

出力

出力は、実験の最後に正常です

この記事のリファレンスドキュメント

https://www.cnblogs.com/kaituorensheng/archive/2013/12/09/3464462.html
https://blog.csdn.net/qq_34116014/article/details/89298175

おすすめ

転載: www.cnblogs.com/anweilx/p/12545602.html