将多个整数转换为单个字符串

Convert multiple Integers into a single string

我有一个函数可以提取加速度计的 X、Y、Z 坐标并将它们存储在 3 个单独的整数中。

我想通过我的微控制器上的无线芯片发送这些,但是传输函数需要一个字符串参数。

所以我想将整数组合成一个字符串,然后发送这个字符串。

我有:

    Int xData;
    Int yData;
    Int zData;

char totalData[64]

但想将它们组合成一个字符串,如下所示:

("X:" + xData + " Y:" + yData + " Z: "xData)

使用sprintf。它像 printf 一样工作,但输出被放入 char 数组而不是发送到标准输出:

sprintf(totalData, "X:%d: Y:%d: Z:%d", xData, yData, zData);

防止缓冲区溢出。使用 snprintf() 并检查结果。

int n = snprintf(totalData, sizeof totalData, "X:%d Y:%d Z: %d", xData, yData, zData);
if (n >= 0 && n < sizeof totalData) {
  Success_SendIt(totalData);
}

另一种解决所有问题但最迂腐的方法,保守地 "right-size" 缓冲区并且不使用幻数 64

// Longest string length of an int
#include <stdlib.h>
#define INT_STR_LEN (sizeof(int)*CHAR_BIT/3 + 2)

int xData;
int yData;
int zData;
const char format[] =  "X:%d Y:%d Z: %d";
char totalData[INT_STR_LEN*3 + sizeof(format) + 1];

sprintf(totalData, format, xData, yData, zData);
SendIt(totalData);

这样写:

#include <stdio.h>


int main()
{
    int x, y,z;
    x=1, y=2, z=3;
    char w[6];
    sprintf(w, "%d%d%d", x,y,z);
    printf(w);

}

根据需要更改 w[i] 尺寸。