我遇到一个问题,我必须使用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 *的信息。
任何帮助都会非常苛刻。
答案 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);
}