Io riformulo il primo codice che hai postato:
#define BUFLEN 200
char response[BUFLEN] = {'\0'};
byte i = 0;
do {
if (serialSIM800.available()) {
char c = serialSIM800.read();
Serial.write(c);
response[i++] = c;
response[i] = '\0';
}
} while (i < BUFLEN - 1 && response[i] != '\n');
(Non testato)