如何使用arduino代码将char数组转换为字符串

时间:2019-04-23 16:39:00

标签: arrays string char arduino-ide

我有一个收集HTML网页并将其转换为要打印的字符串集的项目。 我使用arduino IDE对该应用程序进行编码,因此arduino IDE必须接受它以及Java和其他解决方案。 char数组必须用于收集传入的字符,但是要存储结果,我需要一个字符串。这些字符串必须能够接受所有字符,包括行尾,回车和制表符。 HTML不会使用零个字符,因此字符串仍然可以正确终止。

我试图在char数组中的接收到的字符串的末尾放置一个零char,但是该字符串仍然以零长度出现。 我浏览了ardunio.cc和该网站,但所有答案都是如何将字符串转换为数组,或者被评论为该问题已被问过而未得到回答。有效的arduino代码未解决此问题,因为即使编写将单个字符添加到字符串的例程也会通过编译器,但运行时不会产生字符串!

String tempStr = "";
int count2 = 0;

char message[700];

for (int count = 0; count < htmlpage.length(); count++) // maximum string length
{
      bufferchr =0;
      bufferchr = (htmlpage.charAt(count2+lencount1));
      message[count2] = bufferchr;
      count2 = count2 +1;
}
tempStr = chararryToStr(message); // fails
tempStr=(message);   // also fails

Count在循环外不存在,其值为零。我已经加入count2来测量消息数组中结果字符串的长度。

所有字符串内容的长度均为零,在打印char数组时显示的是真实结果。

此答案无法在Arduino Uno上编译,并给出以下错误,所有错误均归因于arduino核心编程不接受建议的代码。              Arduino:1.8.8(Windows 8.1),开发板:“ Arduino / Genuino Uno” ead_string_arduino:69:11:错误:“ operator =”不匹配(操作数类型为“ String”和“ String *”)    tempStr =新的String(消息); //将其强制转换为零长度的字符串            ^ 在C:\ Program Files(x86)\ Arduino \ hardware \ arduino \ avr \ cores \ arduino / Arduino.h:222:0包含的文件中,                  从C:\ Users \ stephen \ AppData \ Local \ Temp \ arduino_build_685202 \ sketch \ read_string_arduino.ino.cpp:1: C:\ Program Files(x86)\ Arduino \ hardware \ arduino \ avr \ cores \ arduino / WString.h:86:11:注意:候选:String&String :: operator =(const String&)   字符串&运算符=(const字符串&rhs);            ^ C:\ Program Files(x86)\ Arduino \ hardware \ arduino \ avr \ cores \ arduino / WString.h:86:11:注意:参数1从'String *'到'const String&'的未知转换 C:\ Program Files(x86)\ Arduino \ hardware \ arduino \ avr \ cores \ arduino / WString.h:87:11:注意:候选:String&String :: operator =(const char *)   字符串&运算符=(const char cstr);            ^ C:\ Program Files(x86)\ Arduino \ hardware \ arduino \ avr \ cores \ arduino / WString.h:87:11:注意:参数1从'String '到'const char *的转换未知' C:\ Program Files(x86)\ Arduino \ hardware \ arduino \ avr \ cores \ arduino / WString.h:88:11:注意:候选:String&String :: operator =(const __FlashStringHelper *)   字符串&运算符=(const __FlashStringHelper str);            ^ C:\ Program Files(x86)\ Arduino \ hardware \ arduino \ avr \ cores \ arduino / WString.h:88:11:注意:参数1从'String '到'const __FlashStringHelper *的未知转换' 退出状态1 'operator ='不匹配(操作数类型为'String'和'String *')

1 个答案:

答案 0 :(得分:0)

没有lencount1的声明,因此不能完全确定您的代码在做什么,但是不管怎么说,它太复杂了。

首先,要将C ++字符串复制到C数组中,有多种方法可以执行此操作,但是 strncpy(message,html.c_str(),sizeof(message));

可能是最简单的。

要将C ++字符串复制到另一个C ++字符串,并假设htmlpage也是一个String,那么您只需要 tempStr = htmlpage;