我正在尝试将一个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
那么为什么不能打印元素却不能打印整个数组呢?
最佳答案
我怀疑是因为您没有分配第一个字符:
buffer[++bufferpointer]=data;
由于预先增加,您错过了第一个字符。它可能包含一个null,因此它将在此终止您的字符串。要解决此问题,请使用后递增:
buffer[bufferpointer++]=data;