Forum: Mikrocontroller und Digitale Elektronik C - Kopierter Array hat immer unterschiedliche Werte. Wieso?


von de1m (Gast)


Lesenswert?

Hallo Leute,
das ist mein Beispiel
1
#include <stdio.h>
2
3
int main()
4
{
5
    char cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
6
    
7
    char te[9];
8
    
9
    unsigned int i;
10
    for(i = 0; i < 9; i++){
11
        te[i] = cmd[i];
12
    }
13
    
14
    printf("%d\n", te);
15
16
    return 0;
17
}

Die Ausgabe sieht immer unterschiedlich aus
1
sh-4.3$ main                                                                                                                                      
2
-880411616                                                                                                                                        
3
sh-4.3$ main                                                                                                                                      
4
1994154784                                                                                                                                        
5
sh-4.3$ main                                                                                                                                      
6
-1579372928                                                                                                                                       
7
sh-4.3$ main                                                                                                                                      
8
1091698064                                                                                                                                        
9
sh-4.3$ main                                                                                                                                      
10
1277292064                                                                                                                                        
11
sh-4.3$ main                                                                                                                                      
12
-1411712752                                                                                                                                       
13
sh-4.3$ main                                                                                                                                      
14
1314260048

Meine Frage ist was ist hier falsch?

Es ist nur ein Beispiel und es ist wichtig, dass die Bytes einzeln 
kopiert werden. In meinem Projekt bekomme ich die Bytes über UART 
einzeln und muss diese in ein Array speichern (so stelle ich mir das 
zumindestens vor).

Das ist die tatsächliche Funktion, wo ich das einbauen will
1
static void ICACHE_FLASH_ATTR loop(os_event_t *events) {
2
  int c = uart0_rx_one_char();
3
  if(c != -1) {
4
   //uart_tx_one_char(c);
5
   os_printf("%02x", c);
6
  }
7
}

von Noch einer (Gast)


Lesenswert?

%d ?

printf() erwartet eine Integer -- Dein Programm gibt die Adresse des 
Arrays aus. Nicht den Inhalt.

von Daniel H. (Firma: keine) (commander)


Lesenswert?

de1m schrieb:
> Meine Frage ist was ist hier falsch?

Du gibst die Speicheradresse aus an der das Array te hinterlegt ist. Und 
die wird nunmal bei jedem Start des Programms mit hoher 
Wahrscheinlichkeit anders sein.

von de1m (Gast)


Lesenswert?

hier 
https://de.wikibooks.org/wiki/C-Programmierung:_Einfache_Ein-_und_Ausgabe 
steht, dass %d für integer ist. Und auch mit %i bekomme ich auch 
unterschiedliche Werte.

von de1m (Gast)


Lesenswert?

okay, jetzt verstehe ich. Wenn ich sage printf("%d\n", cmd[1]), dann 
bekomme ich den Wert. Was muss ich eingeben, damit ich den Werte vom 
kompletten Array bekomme?

von 1N 4. (1n4148)


Lesenswert?

Schleife um printf bauen

von Noch einer (Gast)


Lesenswert?

Oder printf ("%d %d %d", cmd[0], cmd[1], cmd[2])

von Dirk K. (d-k)


Lesenswert?

de1m schrieb:
> okay, jetzt verstehe ich. Wenn ich sage printf("%d\n", cmd[1]), dann
> bekomme ich den Wert. Was muss ich eingeben, damit ich den Werte vom
> kompletten Array bekomme?

Du hast ein array of char. Diese chars kannst du jetzt einzeln ausgeben 
(siehe letzte zwei Antworten). Falls das nicht das ist was du willst 
müsstest du sagen in welchen Datentyp das array umgewandelt werden soll 
und was die Umwandlungsvorschrift ist.

von de1m (Gast)


Lesenswert?

Danke Leute, das Problem ist nun erledigt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.