gpt4 book ai didi

使用#define 将值转换为字符串

转载 作者:行者123 更新时间:2023-11-30 19:59:05 24 4
gpt4 key购买 nike

我的任务是将浮点或整数值转换为C中的字符串。我无法使用 sprintf 因为我在嵌入式平台上工作。所以我想使用这样的东西。

#define CURRENT(STRING,S_NO,VALUE) (str = "S"#S_NO#VALUE"A") 

并像这样调用它

int a=10,b=20;
CURRENT(str,a,b);

所以 str 应该是 S1020A。但我得到了 SabA

我在这里做错了什么?

最佳答案

宏在编译之前进行评估,因此 CURRENT(str,a,b); 使用变量名 ab 进行扩展,而不是使用它们的值可能仅在运行时可用。

在运行时将 int 转换为 char 数组,而不使用 sprintf等使用itoa如果可用的话,或者您可以编写如下所示的函数(未经测试!)

#define MAX_INT_STRING_BYTES (11)

void IntToString(int val, char* str)
{
char reversed[MAX_INT_STRING_BYTES]
int index, i = 0;
bool negative = false;
if (val == 0) {
*str++ = '0';
*str = '\0';
return;
}
if (val < 0) {
negative = true;
}
while(val != 0) {
reversed[index++] = (char)('0' + abs(val % 10));
val /= 10;
}
if (negative) {
*str++ = '-';
}
for (i = index; i > 0; i--) {
*str++ = reversed[i - 1]);
}
*str = '\0';
}

关于使用#define 将值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14649778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com