1

char配列をシリアルに出力しようとしています。配列自体は文字で埋められていますが、配列の要素だけでなく配列全体を印刷するとすぐに、印刷される文字列は空になります。

#define MAX_PAYLOAD_SIZE 80
class CmdBuffer {
...
private:
    char buffer[MAX_PAYLOAD_SIZE+1];
    int bufferpointer;
...
};

//In cpp File
String CmdBuffer::readCommand(char data) {
    buffer[++bufferpointer]=data;
    if(data != CMD_EOF) {
       return NULL;
    }
    buffer[++bufferpointer]='\0';
    ...
    for(int i=0; i<bufferpointer; i++) {
        Serial.print(buffer[i]);
    }
    Serial.println("\n-------"); 
    Serial.println(buffer);
    Serial.println("END");  
    ...
}

入力文字が次の場合abcdefg、出力は次のようになります。

abcdefg
-------

END

では、配列全体が印刷できないのに、なぜ要素を印刷できるのでしょうか。

4

1 に答える 1

4

最初の文字を割り当てていないためだと思います。

buffer[++bufferpointer]=data;

事前インクリメントのため、最初の文字が欠落しています。おそらくnullが含まれているため、文字列はそこで終了します。これを修正するには、ポストインクリメントを使用します。

buffer[bufferpointer++]=data;
于 2012-05-02T16:55:35.730 に答える