我有一个收集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 *')
答案 0 :(得分:0)
没有lencount1的声明,因此不能完全确定您的代码在做什么,但是不管怎么说,它太复杂了。
首先,要将C ++字符串复制到C数组中,有多种方法可以执行此操作,但是 strncpy(message,html.c_str(),sizeof(message));
可能是最简单的。
要将C ++字符串复制到另一个C ++字符串,并假设htmlpage也是一个String,那么您只需要 tempStr = htmlpage;