Array Index aus Variable

Gast #1556979
Hallo leute, ich verstehe momentan gar nix mehr.
1
uint8_t nr = keyNrRecieve[1];
2
uart_putc(nr); // Ausgabe 1;
3
uint8_t *p = Key[nr]; // <-- hier das Problem
4
uart_putsN(p,10);

Wenn ich nr in Key als konstante übergebe dann funzt alles(ZB. Key[1]).
Wenn ich es aber Index über nr übergebe bekomme ich nur Müll raus.

danke Randolf
Gast
Randolf schrieb:
> Wenn ich es aber Index über nr übergebe

Wenn ich das richtig sehe, dann versteht kein C-Programmierer was Du 
damit sagen willst.

in dem Ausdruck
1
uint8_t *p = Key[nr];

ist "nr" der Index in ein Array.

Verstehe ich dich recht, das es nicht funktioniert, wenn Du eine andere 
Variable (welche ?) als Index verwendest?
Gast
Aaah. Ich glaube ich ahne was.

Willst Du sagen, dass, wenn Du
1
uint8_t nr = keyNrRecieve[1];

ausführen lässt der Ausdruck
1
uint8_t *p = Key[nr];

nicht mehr "funktioniert"?

Falls Du das meinst, dann poste doch mal den Code. Vor allem die 
Deklaration von Key. Ganz naiv würde ich vermuten, das der Inhalt von 
Key kein gültiger Index in keyNrRecieve ist (Das schreibt man übrigens 
"Receive").
Gast
habe die Vorschläge ausprobiert leider klappt immer noch nicht.
1
uint8_t keyNrRecieve[3];
2
uint8_t Key [3][11]={"0123456789",                   "ABCDEFGHIJ",                   "KLMNOPQRST"};
3
rf12_rxdata(&keyNrRecieve,3); //Empfang von #1@
4
uart_puts("Nr empfangen:");
5
uart_putsN(&keyNrRecieve[1],1);//Ausgabe: 1
6
uint8_t nr = keyNrRecieve[1]; 
7
uart_putc(nr); // Ausgabe : 1
8
uint8_t *p = Key[nr];
9
uart_putsN(p,10); // Ausgabe Müll wenn nr benutzt wird.
Gast
Genau:

Was wird da
1
rf12_rxdata(&keyNrRecieve,3); //Empfang von #1@

empfangen?

Falls Du die gesendeten Daten
als binäre Zahlen interpretierst, schreibe 0byyyyyyyy, wobei y = 0 oder 
1;
falls hexadezimale Zahlen, schreibe 0xyy mit y = 0-9, a-f bz.w A-F,
falls ASCII Zeichen, schreibe 'y' wobei y jedes druckbare Zeichen sein 
darf.
Gast
die methode deklaration ist  rf12_rxdata(unsigned char *data, unsigned 
char number). Habe grade auch
1
unsigned char keyNrRecieve[3];
2
uint8_t nr = (uint8_t)keyNrRecieve[1];
probiert geht aber auch nicht. Blicke echt nicht mehr durch:)
Gast
Randolf schrieb:
> Blicke echt nicht mehr durch

Grrrr schrieb:
> Was wird da
> rf12_rxdata(&keyNrRecieve,3); //Empfang von #1@
>
> empfangen?
>
> Falls Du die gesendeten Daten
> als binäre Zahlen interpretierst, schreibe 0byyyyyyyy, wobei y = 0 oder
> 1;
> falls hexadezimale Zahlen, schreibe 0xyy mit y = 0-9, a-f bz.w A-F,
> falls ASCII Zeichen, schreibe 'y' wobei y jedes druckbare Zeichen sein
> darf.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.