将文件读入char数组,避免使用Arduino的String

时间:2019-05-16 09:11:30

标签: arrays json string arduino-esp8266 spiffs

我有一个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} @

@在字符串末尾!

我的代码有什么问题? 预先感谢

1 个答案:

答案 0 :(得分:1)

我意识到这个问题是在几个月前,并且-在寻求帮助以使类似系统正常运行时遇到了您的问题,我认为我在您的代码中发现了错误。

您要将\ 0 nul字符放在数组末尾之外。

如果数组具有filesize + 1个元素,则需要在其中插入nul字符的最后一个元素是string [filesize],而不是string [filesize + 1]。