将多个整数转换为单个字符串
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]
尺寸。
我有一个函数可以提取加速度计的 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]
尺寸。