将字符串样式从Arduino转换为C共同样式

时间:2013-05-10 18:34:32

标签: c string arduino

我有以下代码

void loop() {
  String outMessage = "";  // String to hold input

  while (Serial.available() > 0) {  // check if at least one char is available
    char inChar = Serial.read();
    outMessage.concat(inChar);  // add Chars to outMessage (concatenate)
  }

  if (outMessage != "") {
    Serial.println("Sent:  " + outMessage); // see in Serial Monitor
    Serial1.write(outMessage); // Send to the other Arduino
  }

我希望用通用的C语言编写它。

Arduino String类是版本0019的核心部分,允许我们以比字符数组更复杂的方式使用和操作文本字符串。

我不知道哪种方式更适合编程。我唯一知道的是String占用了大量的内存。任何消化?

2 个答案:

答案 0 :(得分:2)

没有" Arduino语言"。 Arduinos(以及内部的AVR)使用C,C ++或汇编程序进行编程,Arduino核心库为常见任务提供了一些C函数(以及AVR-libc)和C ++类。您实际尝试做的是将您的代码从C ++转换为C.

具体来说,在C中,字符串是char的以0结尾的数组,所以你可以这样做:

char welcome[] = "Hello world!";

Moar...

答案 1 :(得分:0)

不应该太难。我喜欢使用char数组,因为实际上,它并不困难。要连接两个char数组,你必须知道它们的大小,你必须创建一个第三个缓冲区,它是第一个char数组+第二个char数组的大小。唯一的问题是找到尺寸。这可以通过一个简单的结构来完成:

 typedef struct String{
    int size;
    char * chararray;

 }String;

然后你必须使用大小malloc the chararray并填充整数值。

其余的很简单。