希望有人可以帮助我。相当新的C(来自PHP背景),现在几天都遇到了这个问题。仍然试图掌握指针等,这是PHP无法实现的快乐。
所以基本上,我希望能够将数组中的特定值更新为通过UART给出的值。 UART都正常工作。只是无法让代码工作来更新数组。来自UART的数据将在字符串“uart”中。在下面的代码中,将具有值' 0430' (前2位数字表示数组键,第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};
任何建议都会很棒,即使是简短的解释也能帮助我理解。
提前致谢
答案 0 :(得分:3)
你不能简单地从字符串" 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