我有一个config.json文件存储在基于ESP8266的Web服务器的Flash SPIFFS存储器中。
我的目的是将此文件读入 char数组(char字符串[]),避免使用Arduino的 String 并将其发送到Ajax调用后的客户端。
config.json是这样的:{“ start1h”:11,“ start1m”:20,“ stop1h”:15,“ stop1m”:40}
我尝试使用以下代码,但问题是客户端收到的字符串结尾处带有'@'字符,并且无法通过javascript解析该字符串
#define CONFIGFILE "/config.json"
File configFile = SPIFFS.open(CONFIGFILE, "r");
size_t filesize = configFile.size(); //the size of the file in bytes
char string[filesize + 1]; // + 1 for '\0' char at the end
configFile.read((uint8_t *)string, sizeof(string));
configFile.close();
string[filesize+1] = '\0';
Serial.print(string);
server.send(200, "text/plane", string);
串行输出:{“ start1h”:11,“ start1m”:20,“ stop1h”:15,“ stop1m”:40} @
客户端收到Ajax响应:{“ start1h”:11,“ start1m”:20,“ stop1h”:15,“ stop1m”:40} @
@在字符串末尾!
我的代码有什么问题? 预先感谢
答案 0 :(得分:1)
我意识到这个问题是在几个月前,并且-在寻求帮助以使类似系统正常运行时遇到了您的问题,我认为我在您的代码中发现了错误。
您要将\ 0 nul字符放在数组末尾之外。
如果数组具有filesize + 1个元素,则需要在其中插入nul字符的最后一个元素是string [filesize],而不是string [filesize + 1]。