2

Arduino スケッチ内に char[] があります。コード:

int i = 0;

void setup(){
Serial.begin(9600);

}

void loop(){
  i++;
  Serial.println(i);
  char fff[8] = {'0','0','0','0','0','0','0','0'};
  Serial.println(fff);
  delay(200);
}

私が見るポートを聞いています:

1
00000000²
2
00000000²
3
00000000²
4
00000000²

...

印刷可能な文字の末尾にある予期しない文字でこの問題を解決するにはどうすればよいですか?

4

1 に答える 1

4

fff文字列は null で終了していないため、関数はメモリからのSerial.println()文字の読み取りとシリアル ポートへの送信を停止するタイミングを知りません。メモリ内で最初の null バイトが見つかるとすぐに停止し、予期しない動作につながります。

この問題を解決するには、文字列の末尾にヌル文字を配置する必要があります (また、ヌル文字をカバーするのに十分なメモリを割り当てていることを確認してください)。文字配列では、null 文字は数値 ( 0) またはエスケープ シーケンスを使用した文字( ) としてエンコードできます'\0'

したがって、 の定義を次のように変更しますfff

char fff[9] = { '0', '0', '0', '0', '0', '0', '0', '0', 0 };

また:

char fff[9] = { '0', '0', '0', '0', '0', '0', '0', '0', '\0' };
于 2013-01-10T12:10:11.833 に答える