2017-03-01 9 views
0

文字配列に文字を追加します。私のコードは、[0] = 0 iは、アレイはXであることを期待してい文字配列に文字を追加する方法

char x[100]; 
int i; 
void setup() { 
Serial.begin(115200); 
} 
void loop() { 
for (i=0; i<11;i++) 
{ 
    x[i]=(char)i; 
} 
Serial.println(strlen(x)); 
for (i=0;i<11;i++) 
{ 
    Serial.print(x[i]); 
} 

delay(1000); 
} 

あるX [1]、X [2] = 2 ...... X [10] = 10

を=

しかし、配列は空であるようです。Serial.println(strlen(x));は0を返します。 とSerial.print(x[i]);は何も印刷しません。 文字を配列に追加するにはどうすればいいですか?

+1

@RoadRunnerを追加します。 UBはなく、最初のcharはすでに0です。 –

+0

@RoadRunnerそれ以外にも、配列の末尾には(すでに配列のどこにでも) '\ 0'があります。これはグローバル変数であり、静的なリンケージを持っているため、ツールチェーンが言語標準に準拠していれば、最初はゼロで埋められます。 – WhozCraig

+0

配列の最後に '\ 0'を追加しようとしましたが、Serial.print(x [i]); andSerial.println(strlen(x));何も印刷しません。 0を返します。 –

答えて

2

Oupsでは、C文字列は通常、nullバイトで終了するchar配列です。すべてstrxxの関数がこの規約に従います。

配列の最初の文字があるので... 0、strlenはインデックス0で終端ヌルを見つけ、正しく文字列の長さを加えて0

、コード0ですべての文字にあると述べています10(ASCIIと仮定します)は、制御できない印字可能文字です。

私は何をやってみたかったこと置き換える

for (i=0; i<11;i++) 
{ 
    x[i]= '0' + i; /* 0 to 9 and : */ 
} 
x[11] = '\0'; /* terminate the array with a null to make it a C string */ 
0

であることを前提としていますx[i] = (char)i; へ:x[i]=(char) (((int) '0') + i);x[11] = '\0';

+2

このコードスニペットが質問を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当に品質を向上させるのに役立ちますあなたの投稿の将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – DimaSan

関連する問題