C ++ /当我将memcpy与char *一起使用时,librairie JSMN出现问题

时间:2019-07-09 15:40:59

标签: c++ json arduino

我对C ++的了解非常有限。 我将ESP32与Arduino结合使用,并使用JSMN库解析数据。 我成功地用printf显示了解析数据,但是无法将返回数据放入char *。

#define ARRAYSIZE 100
HTTPClient http;

     http.begin("http://servername/serv/ctrlBadge?entryCodeBadge=11d438cd1&entryidPorte=2"); //Specify the URL

     //Make requests
     int httpCode = http.GET();

        if (httpCode > 0 ) { //Check for the returning code
            String payload = http.getString();
            Serial.println(httpCode2); 

            int lim=payload.length()+1;
            char charBuf[lim];
            char *myStrings[ARRAYSIZE]
            payload.toCharArray(charBuf, lim) ;
            char *JSON_STRING = charBuf;
            Serial.println(JSON_STRING);    
            int i;
            int r;
            jsmn_parser p;
            jsmntok_t t[128]; /* We expect no more than 128 tokens */   
            jsmn_init(&p);
            r = jsmn_parse(&p, JSON_STRING, strlen(JSON_STRING), t, sizeof(t) / sizeof(t[0]));              
            if (r < 0) {
              printf("Failed to parse JSON: %d\n", r);
            }
            /* Assume the top-level element is an object */
            else if (r < 1 || t[0].type != JSMN_OBJECT) {
              printf("Object expected\n");            
            }
          else{
            /* Loop over all keys of the root object */  
            for (i = 1; i < r; i++) {
              if (jsoneq(JSON_STRING, &t[i], "codeBadge") == 0) {
                /* We may use strndup() to fetch string value */         
                printf("- User: %.*s\n", t[i + 1].end - t[i + 1].start,
                       JSON_STRING + t[i + 1].start);//Response                      
                       memcpy(myStrings[i], JSON_STRING + t[i + 1].start, sizeof(JSON_STRING + t[i + 1].start));          
                i++;
              } 
            }
            for (int i =0; i< ARRAYSIZE; i++) Serial.println(myStrings[i]); 
          }
        }

我成功显示了带有以下内容的codeBadge:

printf("- User: %.*s\n", t[i + 1].end - t[i + 1].start, JSON_STRING + t[i        + 1].start);//Response

但是我不知道如何将返回变量放入char *。

我尝试使用memcpy函数,但出现错误:

大师冥想错误:核心1出现了恐慌(商店已禁止)。未处理异常。

0 个答案:

没有答案