Array Index aus Variable

Gast #1556979
Lesenswert?

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 #1556998
Lesenswert?

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 #1557002
Lesenswert?

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 #1557046
Lesenswert?

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 #1557065
Lesenswert?

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 #1557070
Lesenswert?

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 #1557073
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren