为什么不打印完整的字符数组?

Why doesn't it print the full character array?

这是我的第一个 post 所以请多多包涵。让我从代码开始:

#include<stdio.h>
#include<string.h>

char inp[80], cmd[80];
char address[80],value[80];
boolean stringComplete = false;

void setup() {
    Serial.begin(9600);
}  

void loop() {
  serialEvent();
  if (stringComplete) {
    parse_cmd(inp);

    Serial.println(cmd);delay(1000);
    Serial.println(address);delay(1000);
    Serial.println(value);delay(1000);

    memset(inp, 0, strlen(inp));
    stringComplete = false;
  }
}

void serialEvent() {
  int i=0;
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inp[i] = inChar;delay(250);
    if (inChar == ';') {stringComplete = true;}
  i++;
  }
}

void parse_cmd(char *string){
  int i=0,j=0;
  for (i;i<strlen(string);i++) {
    if (string[i]==';' || string[i]==' ') break;
    else cmd[i] = string[i];      
  }
  i++;j=0;
  for (i;i<strlen(string);i++) {
    if (string[i]==';' || string[i]==' ') break;
    else address[j] = string[i];  
  }
  i++;j=0;
  for (i;i<strlen(string);i++) {
    if (string[i]==';' || string[i]==' ') break;
    else value[j] = string[i];
  }  
}

该程序接受一个包含三个单词的字符串,并创建三个单独的字符数组。

问题是当我尝试打印三个 char 变量时,出于某种原因只有其中 1 个打印正常。

假设我输入:1234 5678 90; 我希望在 return 中看到: 1234 5678 90

相反,我得到: 1234 8个 0

第二个和第三个单词只打印最后一个字符。

这三个词的代码完全一样,所以我不明白为什么第二个和第三个打印错了。

非常感谢,

先生

加载地址和值的缓冲区时,您没有递增 j。

请注意,如果数据过多,您的输入例程 (serialEvent) 也不会停止,并且会溢出您的缓冲区。