www.mikrocontroller.net

Forum: Compiler & IDEs Stringlänge in eiem Zeigerfeld ermitteln


Autor: unwissender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte die Länge von Strings aus einem Zeigerfeld ermitteln, welche 
zu Debugzwecken der Variable "temp" zugewiesen werden.
Zielsystem ist ein AVR Atmega32, WinAVR (keine Ahnung, neueste Version).
...
prog_char message1[]  = "string_1\r";
prog_char message2[]  = "string__2\r";
prog_char message3[]  = "string___3\r";
prog_char message4[]  = "string____4\r";
prog_char message5[]  = "string_____5\r";
PGM_P messages[] = { message1, message2, message3, message4, message5 };
...

Version 1 ergibt eine 1.
...

  for (index = 0; index < :wasweißich:; index++) {
    test = strlen(messages[index]);

...

Version 2 eine Null '\0' .
...

  for (index = 0; index < :wasweißich:; index++) {
    test = strlen(*(messages[index]));

...

Nun die Frage: Was verstehe ich mal wieder grundlegend falsch?

mfg

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unwissender schrieb:

> Nun die Frage: Was verstehe ich mal wieder grundlegend falsch?

Das du auf Dinge im Flash nicht mit den normalen Funktionen zugreifen 
kannst. (Ich gehe mal davon aus, dass ein prog_char ein char ist, der im 
Flash residiert).

Deine Version 1 wäre im Prinzip schon richtig, wenn du noch 
berücksichtigen würdest, dass message im Flash liegt und man daher nicht 
einfach über messages[i] zugreifen kann (Selbiges für strlen)

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Autor: unwissender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
strlen_P, ich ahnte es schon beim Abschicken des Postings, Danke, Karl 
Heinz!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.