【问题标题】:Converting integer to char for each number?将每个数字的整数转换为字符?
【发布时间】:2013-12-24 05:13:13
【问题描述】:

我有一个连接到我正在编程的处理器的显示器。它是气象站的一部分,我需要显示温度和其他数据。

但是有一个问题。无法将整数写入显示器,因为显示器自己的控制器使用 8 位数据总线来确定将写入哪个字符。

请注意,我编写的函数DisplayPrint 需要一个字符数组。然后分析该数组并使用“;”字符确定数组停止的位置。我会做 DisplayPrint("Temperature: ;") 以便在显示屏上写入“温度:”。

问题来了:如何发送一个整数并返回一个字符数组?

示例: 函数调用parseChar

int x = 100;  
char string[255];  
string = parseChar(x);

x 进入parseCharparseChar 返回一个看起来像这样的数组;

string[0] = '1'  
string[1] = '0'  
string[2] = '0'  
string[3] = ';'  
string[4 to 254] = *don't care, can be anything*

我已经为此坐了两天,几乎没有成功。


这不是电脑编程。

我正在使用连接到 Arduino DUE 的 J-tag,该 Arduino DUE 连接到带有控制器的显示器。使用 IAR Embedded Workbench

完成编程

【问题讨论】:

  • @HotLicks:你在 C 中使用它?
  • 那里的东西看起来像 Java。但在 C 中也没什么大不了的——我只需要查找接口或(足够简单)将我自己的 int 编码为字符串例程。

标签: c arrays parsing char int


【解决方案1】:

将字符串设置为你的数字+分号:

snprintf(string, sizeof(string), "%d;", x);

【讨论】:

  • 好吧... snprintf(char 数组、位置数、格式、要格式化的东西...) ?这个函数是返回任何东西还是只影响缓冲区?使用 strlen 需要包含哪些内容?
  • 它返回写入的字符数(不包括结尾的0)。您不再需要strlen(),因为您将问题更新为不需要填充缓冲区的其余部分;如果您确实想在其他地方使用它,#include <string.h>
  • 我没有用 C 语言编写过很多程序,所以我还想问一件事。声明一个字符数组时,数组中的每个字符是否都设置为NULL字符?
  • 否(或者,通常情况下)。数组内容将未初始化;不要期望任何特定的价值。如果您想确保空值,请使用 memset()。例外:static 变量被初始化为0,但这只会发生一次;如果您在函数中使用静态变量,则在第二次和后续调用函数时不一定是 0
  • 好的,非常感谢。你真的让我免于很多麻烦。
【解决方案2】:

您可以使用 snprinf,而不是使用 parseChar。

snprintf(string, sizeof(string), "%d;", x);

如果您希望缓冲区的其余部分为 0s,只需在使用 memset 之前将其清除即可。

memset(string, 0, sizeof(string));

【讨论】:

  • 请注意,出于某种原因,OP 希望缓冲区的其余部分填充“0”字符。
【解决方案3】:

您可以按照其他答案中的说明使用snprintf (http://linux.die.net/man/3/snprintf)。

但是,如果您想知道将小数转换为字符串背后的逻辑,您应该考虑在 10 上使用 mod 操作。示例:

首先)

2345 % 10 = 5
2345/10 = 234 (integer)

然后)

234 % 10 = 4
234 / 10 = 23

然后)

23 % 10 = 3
23 / 10 = 2

然后)

2 % 10 = 2
2 / 10 = 0 (stop)

因此,您只需要一个当除法为 0 时将停止的 while 循环。例如,要将 int 数字转换为字符,您只需要str[i] = 2 + '0';(更多关于https://stackoverflow.com/questions/1114741/how-to-convert-int-to-char-c)。

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多