希望有人可以在这里帮助我。C相当新的C(来自PHP背景),并且几天被困在这个问题上。仍在尝试获得圆形指针等,Joy php没有。
因此,我希望能够将数组中的特定值更新为通过UART给出的值。UART都可以正常工作。只是无法让代码工作以更新数组。来自UART的数据将在下面的代码中的字符串'UART'中,并将具有值'0430'(前2位数字参考数组键,第二个两个将是将其更新为的值)。
// Array values
int unsigned array[15] = {05,76,33,02,11,07,34,32,65,04,09,32,90,03,44};
// Split the UART string into required parts
// Array Key
int key;
memcpy (key, &uart[0], 2);
// New Value
int value;
memcpy (value, &uart[2], 2);
array[key] = value; // Im sure this is wrong and needs to be done via a pointer?
新数组现在应该是: {05,76,33,02,30,07,34,32,65,04,09,32,90,03,44};
任何建议都很棒,甚至简短的解释都将是一流的,可以帮助我理解。
预先感谢
您不能简单地将两个字节从字符串" 04"复制到int
变量,并期望它包含4。您需要将字符串" 04"转换为值4使用atoi
您想要这个:
char uart[] = "0430"; // made up uart buffer just for debugging
char temp[3] = { 0 }; // buffer for 2 char string, all 3 bytes initialized to 0
temp[0] = uart[0];
temp[1] = uart[1]; // temp contains now "04"
int key = atoi(temp); // convert from string to integer, key now contains 4
temp[0] = uart[2];
temp[1] = uart[3]; // temp contains now "30"
int value = atoi(temp); // convert from string to integer, value now contains 30