Frage zur Funktion "eeprom_write_block"

Gast #3354201
Lesenswert?
• ▲
▼
Folgendes funktioniert:
1
char PASSWORT[5] 
2
char EEMEM eepromPASSWORT[5];
3

4
----------------------------------------------------
5
eeprom_write_block("ABCDE", &eepromPASSWORT, 5 );
6
eeprom_read_block(&PASSWORT, &eepromPASSWORT, 5);
7
lcd_puts(font5x8,PASSWORT);
Im String "Passwort" steht dann "ABCDE" und ist auch nach Reset noch 
vorhanden (also im EEPROM).



Nur funktioniert folgendes nicht:
1
eeprom_write_block("ABCDE", &eepromPASSWORT, 5 );
2
eeprom_read_block(&PASSWORT, &eepromPASSWORT, 5);
3
PASSWORT[5]="12345";
4
eeprom_write_block(&PASSWORT, &eepromPASSWORT, 5 );
5
eeprom_read_block(&PASSWORT, &eepromPASSWORT, 5);
6
lcd_puts(font5x8,PASSWORT);
Dann müsste doch jetzt "1234" auch nach einem Reset angezeigt werden, 
doch leider funktioniert eeprom_write_block(&PASSWORT, &eepromPASSWORT, 
5 ); nicht :(


Hat jemand ne Idee?
#3354218
Lesenswert?
• ▲
▼
Andi H schrieb:

> Im String "Passwort" steht dann "ABCDE"

das glaube ich nicht.
Denn in einem Array der Länge 5 kannst du maximal einen String mit einer 
strlen von 4 speichern. Das abschliessende obligatorische \0 Byte, 
welches das Ende der Zeichenkette markiert, muss ja auch irgendwo hin.
Und das du hier einen Adressoperator benutzen musst um die Arrays zu 
übergeben macht mich auch stutzig.

> und ist auch nach Reset noch
> vorhanden (also im EEPROM).

die 5 Zeichen stehen im EEPROM: Sie sind aber kein String, sondern 5 
Zeichen.


> PASSWORT[5]="12345";

Was soll das sein?
Arrays kann man nicht zuweisen.

> Hat jemand ne Idee?

Ja.
Lies im C-Buch deiner Wahl darüber nach, wie Stringverarbeitung in C 
wirklich funktioniert. Dann bügelst du auch nicht unabsichtlich Speicher 
über den Haufen, der dir nicht gehört.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.