首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用%s时有问题

在使用%s时有问题
EN

Stack Overflow用户
提问于 2022-02-17 11:23:30
回答 1查看 29关注 0票数 1

我正在进行一个项目,在该项目中提取从全球定位系统接收到的数据,并将其保存在名为rx_data_buffer的数组中:

代码语言:javascript
复制
uint8_t rx_data_buffer[84] = {0};

我得到的结果如下(参见rx_data_buffer):在这里输入图像描述

然后,我从rx_data_buffer中提取以下数组中的数据:

代码语言:javascript
复制
uint8_t lattitude[10] = {0};
uint8_t longitude[10] = {0};
uint8_t altitude[5] ={0};

数据提取如下:

代码语言:javascript
复制
for (uint8_t i =0; i < 10; i++)
{
  lattitude[i] = rx_data_buffer[i+17];
}
for (uint8_t j =0; j < 10; j++)
{
  longitude[j] = rx_data_buffer[j+31];
}
for (uint8_t k =0; k < 5; k++)
{
  altitude[k] = rx_data_buffer[k+56];
}

结果如下:

在这里输入图像描述

直到这里,一切都正常,但是当我将纬度、经度和高度数据放在一个数组中时,使用%s将它们保存在SD卡中,如下所示:

代码语言:javascript
复制
snprintf(mystring, sizeof(mystring), "\n%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%d,%s,%s,%s",           readAccelerometer(X_AXIS),readAccelerometer(Y_AXIS),readAccelerometer(Z_AXIS),readGyro(X_AXIS),          readGyro(Y_AXIS),readGyro(Z_AXIS),readMagnetometer(X_AXIS),readMagnetometer(Y_AXIS),         readMagnetometer(Z_AXIS),heart_rate,longitude,lattitude,altitude);

我很好地得到了经度和高度值,但从某种意义上说,它显示了两个值的组合,这是错误的纬度值,如下所示:在这里输入图像描述

有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-17 12:20:55

为了用作字符串,数组需要一个空终止符。由于要将数组初始化为零,最简单的解决方案是使它们比所需的要大。例:

代码语言:javascript
复制
uint8_t lattitude[11] = {0};
uint8_t longitude[11] = {0};
uint8_t altitude[6] ={0};

只要不对数组中的最后一个元素进行写入,它将保持为'\0',并且可以使用字符串函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71157220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档