【问题标题】:Appending ints to char* and then clearing将 int 附加到 char* 然后清除
【发布时间】:2009-06-06 07:31:06
【问题描述】:

我正在使用 Arduino 开发一个项目,因此,我正在从串行端口(发送 ints)读取数据。然后我需要将此串行通信写入 LCD,它需要 char*

我需要将串口中的几个字符(两个整数)读入一个字符串。收到两者后,我需要清除字符串以准备接下来的两个字符。

TLDR:如何将int 附加到char*,然后在字符串有两个字符后将其清除?

【问题讨论】:

  • 如果你只使用一个stl字符串,这种东西会更简单。有一个 c_str() 方法可以为您提供所需的 char*。尽管使用 sprintf 之类的开销较小,但这可能很重要。
  • Arduino 的内存有限,所有示例都使用 char*。

标签: c++ char serial-port int arduino


【解决方案1】:

char 是单个字符,而 char* 可以是指向字符的指针,也可以是指向 C 字符串中第一个字符的指针,它是一个以空字符结尾的字符数组。

您不能使用 char 来表示长于 1 位的整数,所以我假设您实际上是指 char*。

如果你有

char buffer[10];

然后您可以将buffer 设置为一个字符串,该字符串表示带有 sprintf 的 int n

sprintf(buffer, "%d", n);

当你完成它时,你可以清除字符串

sprintf(buffer, "");

希望这就是您的要求,祝您好运!

【讨论】:

  • 它似乎工作,但使用buffer = ""; 给我一个编译错误:“'const char [1]' 到 'char [10]' 的分配中的类型不兼容”
  • 嗯。对不起,我的 C 有点生锈了。使用 sprintf(buffer, "");
  • 好的,可以,但缓冲区似乎设置为“49”(1 的 ASCII 码)。有什么想法吗?
  • 不,这是在那之前。 (也改写了我的问题,现在应该更好了。)
  • 我可以在计算机(发送)端使用 chr(19),它可以让这段代码工作,所以接受它。谢谢!
【解决方案2】:

你不能读入一个 char *,它是一个指针。您可以读入指针指向的内存,前提是它指向有效的东西。至于清除,你的意思不是很明显。

底线是你需要发布一些实际的代码来尝试做你想做的事情,然后询问。

【讨论】:

  • 抱歉,我没有意识到 char 和 char* 之间的区别。我已经把我的问题改成了char。另外,通过清除,我的意思是使 char 完全空白(没有值)。
  • 不,您也不是指 char - char 是单个字节。请发布一些代码!
猜你喜欢
  • 2010-09-25
  • 1970-01-01
  • 2012-10-08
  • 2018-02-03
  • 1970-01-01
  • 2023-02-08
  • 2012-07-05
  • 2013-11-22
  • 1970-01-01
相关资源
最近更新 更多