Extracting message content in SIM900
You should check out some basic string handling tutorials.

I would suggest using strstr (C) or string::find (C++) instead of an elaborate if-if-if.

//C++
std::size_t found = smscontent.find("CHANGE");
if (found!=std::string::npos){
   std::string valueString = smscontent.substr(found+6/*strlen("CHANGE")*/);
   int value = std::stoi(valueString,nullptr);
}


I actually have no idea if the code above compiles or is anything like you're searching for.

//C
char buffer[20] = {'\0'};
int value = 0;
char * pposition = strstr(smscontent,"CHANGE");
ptrdiff_t position = pposition - smscontent;

if(pposition != NULL){
   strcpy(buffer, pposition);
   value = atoi(buffer);
}


There might be way easier options though, especially when using C++ or sscanf (if possible)

simply:

sscanf(smscontent,"CHANGE%u",value);


and the value will be saved in the variable: "value"