gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:14:04 25 4
gpt4 key购买 nike

这是我的第一篇文章,所以请耐心等待。让我从代码开始:

#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;我期望看到返回:1234567890

相反,我得到:123480

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

代码对这三个单词执行完全相同的操作,所以我无法理解为什么第二次和第三次打印错误。

非常感谢,

先生

最佳答案

加载地址和值缓冲区时,您不会递增 j。

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

关于c - 为什么它不打印完整的字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com