0

I have a character array called storebuffer that contains data from a POST submission and its in the format ssid=abcdef&pswd=ghijk. I wanted to extract everything after ssid= into one array called acqSSID and the portion after &pswd= into another array called acqPaswd. I tried using this but it does not seem to be working. MAX_STORE_BUFFER_LEN is 255. Can anyone help?

int ctr = 0;
for (ctr = 5; ctr < MAX_STORE_BUFFER_LEN; ctr++)
{
 if ( (storebuffer[ctr] == '&') && (storebuffer[ctr+1] == 'p') && (storebuffer[ctr+2] == 's') && (storebuffer[ctr+3] == 'w') && (storebuffer[ctr+4] == 'd') && (storebuffer[ctr+5] == '=') )
 {
 break;
 }
 acqSSID[ctr] = storebuffer[ctr];
}
Serial.print("acqSSID: ");
Serial.println(acqSSID);
Serial.print("ctr: ");
Serial.println(ctr);
asked Jun 14, 2016 at 17:33

2 Answers 2

1

You can simply chop it up in place without requiring more than a few extra bytes of RAM using strtok():

char storebuffer[] = "ssid=abcdef&pswd=ghijk";
// Slice it into two parts around the &:
char *lefthalf = strtok(storebuffer, "&");
if (lefthalf != NULL) { // We found a & and split the string OK
 char *righthalf = strtok(NULL, "&");
 // Now you can slice each half around the =
 char *ssidtag = strtok(lefthalf, "=");
 char *ssid = strtok(NULL, "=");
 char *pswdtag = strtok(righthalf, "=");
 char *pswdtag = strtok(NULL, "=");
 Serial.print("SSID: ");
 Serial.println(ssid);
 Serial.print("Password: ");
 Serial.println(pswd);
}

The existing string gets chopped up and the pointers point to different places:

ssid0円abcdef0円pswd0円ghijk
^ ^ ^ ^
1 2 3 4
1: ssidtag
2: ssid
3: pswdtag
4: pswd
answered Aug 13, 2016 at 18:59
0

Rather than acqSSID[ctr] = storebuffer[ctr];, say (eg) acqSSID[ctr-5] = storebuffer[ctr];. Also, after the break but before printing acqSSID, say acqSSID[ctr-5] = 0; to terminate the string.

Note, rather than coding a literal 5, you might say enum { acqOffset=5 }; up front, and subsequently use acqOffset in place of the literal.

answered Jun 14, 2016 at 17:37

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.