Arduino使用未知大小的char *

时间:2016-05-15 00:11:38

标签: arrays string arduino char

我遇到一个问题,我必须使用char数组并动态修改它。例如,我通过Serial或其他任何东西收到一个字符串,我需要将char数组与String相同。

示例:

char* pepe = "whatever";
String stringReceived = "AnyStringOfUnknownSize";

我试过了:

For(int i=0; i< stringReceived.lenght(); i++){
pepe[i] = stringReceived.charAt(0);
}

但是只有当字符串与char *的大小相同时它才有效,如果它不能正常工作(留下额外的字符或类似的东西)。我没有找到任何方法来修改char数组的长度。 arduino中没有关于char *的信息。

任何帮助都会非常苛刻。

1 个答案:

答案 0 :(得分:1)

确保在结尾处放置一个空终止符(&#39; \ 0&#39;)。

#include <string>
#include <iostream>

int main(){

  //your initial data
  char pepe[100];
  std::string stringReceived = "AnyStringOfUnknownSize";

  //iterate over each character and add it to the char array
  for (int i = 0; i < stringReceived.length(); ++i){
    pepe[i] = stringReceived.at(i);
    std::cout << i << std::endl;
  }

  //add the null terminator at the end
  pepe[stringReceived.length()] = '\0';

  //print the copied string
  printf("%s\n",pepe);
}

或者,您应该考虑使用strcpy

#include <string>
#include <iostream>
#include <cstring>

int main(){

  //your initial data
  char pepe[100];
  std::string stringReceived = "AnyStringOfUnknownSize";

  //copy the string to the char array
  std::strcpy(pepe,stringReceived.c_str());

  //print the copied string
  printf("%s\n",pepe);
}