Zeichenkette ausgeben

Gast #2648765
const static char array[] PROGMEM = "0123456789";
char buffer;
static char help[100];
buffer = array[7];
sprintf_P(help,PSTR(" %d \n") buffer);
uart1_puts(help);


Hallo Leute,

ich sehe glaube ich vor lauter Bäumen den Wald nicht mehr.
In dem kurzen Quellcode oben versuche ich das siebte Element des Arrays 
auszugeben. Leider habe ich keinen erfolg. Sieht jemand den fehler?
Danke schonmal für eure Hilfe
Gast
Günther schrieb:

> uart1_puts(help);

> const static char array[] PROGMEM = "0123456789";
> char buffer;
> buffer = array[7];
das kann schon mal nicht gehen

> sprintf_P(help,PSTR(" %d \n") buffer);
hier fehlt doch erstmal ein , oder nicht?

%d erwartet eine zahl - du übergibst aber ein zeichen.
Gast
Ich sag es ja der Wald :-)
Danke

Funktioniert jetzt bis auf einen schönheitsfehler.

 sprintf_P(help,PSTR("%x \r\n"),buffer);

diese zeile gibt mir richtig den hex wert aus.
Aber ich will den dezimalwert, da dachte ich immer %d oder %i wäre das 
richtige. da kommt allerdings Mist raus
Günther schrieb:
> Ich sag es ja der Wald :-)
> Danke
>
> Funktioniert jetzt bis auf einen schönheitsfehler.
>
>  sprintf_P(help,PSTR("%x \r\n"),buffer);
>
> diese zeile gibt mir richtig den hex wert aus.
> Aber ich will den dezimalwert, da dachte ich immer %d oder %i wäre das
> richtige. da kommt allerdings Mist raus

sprintf docu zu raten ziehen? müsste ich jetzt auch machen...
Gast
Günther schrieb:
> diese zeile gibt mir richtig den hex wert aus.
> Aber ich will den dezimalwert, da dachte ich immer %d oder %i wäre das
> richtige. da kommt allerdings Mist raus

du hast doch überhaupt keine zahl, du musst nichts umwandeln! Du hast 
schon einen String oder zumindest ein zeichen.

Wenn du unbedingt printf nutzen willst dann so:

sprintf_P(help,PSTR("%c \r\n"),buffer);
Gast
So, leider ahbe ich noch eine weitere Frage.

Natürlich will ich mehrere Arrays anlegen.


     buffer= pgm_read_byte(&array[4]);
     sprintf_P(help,PSTR("%c \r\n"),buffer);
das funktioniert 1A.

So jetzt MUSS ich dieses Programm erweitern. es wird:
array0,array1,...array10000 geben.

und jetzt will ich nicht 10000mal      buffer= pgm_read_byte(&array[4]);
schreiben.
habe ich da eine möglichkeit das abzukürzen?
Günther schrieb:
> So, leider ahbe ich noch eine weitere Frage.
>
> Natürlich will ich mehrere Arrays anlegen.
>
>
>      buffer= pgm_read_byte(&array[4]);
>      sprintf_P(help,PSTR("%c \r\n"),buffer);
> das funktioniert 1A.
>
> So jetzt MUSS ich dieses Programm erweitern. es wird:
> array0,array1,...array10000 geben.

Warum willst du das?
Was steht in den anderen Arrays denn so drinnen?

Wie unterscheidest du denn, welches der 1000 Arrays das Richtige ist?
Gast
Also da stehen nur zeichen drin. und über eine eingabe über rs232 will 
ich ein bestimmtes zeichen (a) der  zeichenkette ausgeben. z.B. 
array773z4. und dann soll
buffer= pgm_read_byte(&array773[4]);
ausgeführt werden.
Die eingabe steht.
Ich habe die 773 in einer Variablen und die 4 in einer variabelen.
nur kann ich das nicht zusammenfügen zu einem Befehl
Günther schrieb:
> Also da stehen nur zeichen drin. und über eine eingabe über rs232 will
> ich ein bestimmtes zeichen (a) der  zeichenkette ausgeben. z.B.
> array773z4. und dann soll
> buffer= pgm_read_byte(&array773[4]);
> ausgeführt werden.
> Die eingabe steht.
> Ich habe die 773 in einer Variablen und die 4 in einer variabelen.
> nur kann ich das nicht zusammenfügen zu einem Befehl

Aber du kannst die 774 genauso wie die 4 als Index in ein und dasselbe 
Array auffassen. Du hast dann halt ein 2-dimensionales Array anstatt 
vieler 1-dimensionaler.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.