PROGMEM und Strings

Hallo,

ich möchte für einen Webserver einige char Strings zusammenbauen. In etwas so:

char response[2048];

response += char[] aus PROGMEM
response += irgendeinString
response += char[] aus PROGMEM
etc...

Ich habe sie mit Progrem angelegt und einen kann ich auch immer in meinen Zielpuffer laden. Ich kann nur nichts an ihn anhängen, weder mit strcat noch mit sprintf.

Hat jemand so etwas schon mal gemacht? Oder hat eine idee? Ich komme gerade echt nicht weiter...

//edit verwende einen Mega2560

Mit C Strings kannst du nicht += machen!!!

Und wenn du Funktionen wie strcat() verwendest, musst du die _P Version verwenden. Also strcat_P(). Damit kann man einen PROGMEM String als zweiten Parameter verwenden. Das gibt es auch für die meisten anderen String Funktionen wie strlen(), strstr(), strcmp(), etc.

sprintf() ist etwas anders. sprintf_P() ist dafür da den Format String per PSTR() ins PROGMEM zu schreiben. Es gibt aber den %S Parameter für PROGMEM Argumente. Siehe Doku:
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#gaa3b98c0d17b35642c0f3e4649092b9f1

S Similar to the s format, except the pointer is expected to point to a program-memory (ROM) string instead of a RAM string.

@Serenifly

Das war es, vielen dank!

Hast mir den Tag gerettet :wink: