Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Arduino C++;字符数组为空,元素已填充_C++_Arduino - Fatal编程技术网

C++ Arduino C++;字符数组为空,元素已填充

C++ Arduino C++;字符数组为空,元素已填充,c++,arduino,C++,Arduino,我正试图将一个字符数组打印成串行。数组本身充满了字符,但只要我打印整个数组——不仅仅是它的元素——打印的字符串就是空的 #define MAX_PAYLOAD_SIZE 80 class CmdBuffer { ... private: char buffer[MAX_PAYLOAD_SIZE+1]; int bufferpointer; ... }; //In cpp File String CmdBuffer::readCommand(char data) { bu

我正试图将一个字符数组打印成串行。数组本身充满了字符,但只要我打印整个数组——不仅仅是它的元素——打印的字符串就是空的

#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");  
    ...
}

那么为什么可以打印元素,而整个数组不能打印呢?

我怀疑这是因为您没有指定第一个字符:

buffer[++bufferpointer]=data;
由于预增量,您缺少第一个字符。它可能包含一个空值,因此它在这里终止您的字符串。要修复此问题,请使用后期增量:

buffer[bufferpointer++]=data;

我怀疑这是因为您没有指定第一个字符:

buffer[++bufferpointer]=data;
由于预增量,您缺少第一个字符。它可能包含一个空值,因此它在这里终止您的字符串。要修复此问题,请使用后期增量:

buffer[bufferpointer++]=data;

非常感谢你。我应该想到这一点。浪费了2个小时;-)非常感谢你。我应该想到这一点。浪费了2个小时;-)