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;

由于预增量,您缺少第一个字符。它可能包含一个空值,因此它会在此处终止您的字符串。要修复它,请使用后增量:

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