Forum: Mikrocontroller und Digitale Elektronik Arduino/C - sprintf_P() - Ersetzender String im Flash


von Wurstel (Gast)


Lesenswert?

Hallo,

hab eine Konstante "a" im Flash Bereich eines AVR:

const char PROGMEM a[] = "Eis ist %s";

Diese kopiere ich in eine SRAM Variable "buffer":

char buffer[20];

sprintf_P(buffer, a, "lecker");

und füge noch eine Zeichenkette an. Das funktioniert auch soweit. Ich 
möchte aber nun das "lecker" auch noch im Flash ablegen und ich weiß 
nicht wie ich das anstellen soll.

sprintf_P(buffer, a, F("lecker"));

funktionert nicht. Gibt es hierfür eine Lösung?

: Verschoben durch User
von Carl D. (jcw2)


Lesenswert?

printf holt der String aus dem Flash, wenn statt %s %S benutzt wird.
Der Zusatz "_P" bewirkt nur, daß der Format-String aus dem Flash gelesen 
wird.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

Für strings im flash gibt es den format string %S, also grosses statt 
kleines s. Eventuell könnte man PSTR statt F verwenden.

von Wurstel (Gast)


Lesenswert?

Super! Funktioniert! Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.