Hilfe zu struct
- 
					
					
					
					
 Hallo Zusammnen, 
 vielleicht kann mir jemand helfen?Ich habe in einer Struktur 2 Int Variablen und ein Int Array definiert. Ich kann die beiden Int Variablen und das Int Array[0] ausgeben. 
 Ich schaffe es aber nicht die weiteren Inhalte des Arrays auzugeben. Ich weiß nicht wie man darauf zugreift.
 Hier mein Code.#include<stddef.h> #include<stdio.h> struct Can { int CanID; int CanLen; int CanData1[8]; //int CanData2; }; int main(void) { struct Can msg1={0x100, 0x01, 0x11, 0x66}; struct Can msg2={200, 2, 22}; struct Can msg3={300, 3, 44}; struct Can msg4={400, 4, 55}; struct Can* data[]={ &msg1, &msg2, &msg3, &msg4}; //size_t data_count = sizeof(data); //size_t data_count2 = sizeof(*data); data_count = sizeof(data) / sizeof(*data); printf("Adresse CanData1: %d , Adresse CanData2 :%d\n", &msg1.CanData1[0], &msg1.CanData1[1]); for( size_t i=0; i<data_count; i++ ) { printf( "CanID : 0x%x, CanLen: 0x0%x, CanData 1: 0x%x\n", data[i]->CanID, data[i]->CanLen, *data[i]->CanData1); //printf( "CanID : 0x%x, CanLen: 0x0%x, CanData 1: 0x%x, CanData 2: 0x%x\n", data[i]->CanID, data[i]->CanLen, data[i]->CanData1, data[i]->CanData2); } return 0; }Ein weiter Frage wäre ob man in CodeBlocks das Cosolenfenster so einstellen kann, dass es bei mhreren Bildschirmen nicht immer hinter dem Codefenster verschwindet? Viele Grüße Michael 
 
- 
					
					
					
					
 @mj1234 sagte in Hilfe zu struct: > //printf( "CanID : 0x%x, CanLen: 0x0%x, CanData 1: 0x%x, CanData 2: 0x%x\n", data[i]->CanID, data[i]->CanLen, data[i]->CanData1, data[i]->CanData2);CanData2 gibt es doch gar nicht! 
 Es gibt CanData1[0], CanData1[1] usw.
 
- 
					
					
					
					
 Die Zeile ist doch auskommentiert. 
 Die diente nur für meine Tests.
 
- 
					
					
					
					
 Dann weiß ich nicht, was Du willst ... was genau geht denn nicht? Zeig mal den Code, den Du haben möchtest, und warum der nicht geht (Fehlermeldungen vom Compiler). @mj1234 sagte in Hilfe zu struct: Ich habe in einer Struktur 2 Int Variablen und ein Int Array definiert. Ich kann die beiden Int Variablen und das Int Array[0] ausgeben. 
 Ich schaffe es aber nicht die weiteren Inhalte des Arrays auzugeben.Dein struct hat keine weiteren Elemente (außer CanData1[1] bis CanData1[7]), was also willst Du? 
 
- 
					
					
					
					
 Alles wichtige als Kommentar im Programm. 
 Das was Du hier nutzt ist C und kein C++. Das nächste Mal bitte in die richtige Kategorie posten.#include<stddef.h> #include<stdio.h> #include<stdlib.h> // Das ist ein C Programm, weshalb in der Rubrik C++? #define SIZE_CAN_DATA 8 struct Can { int CanID; int CanLen; int CanData1[SIZE_CAN_DATA]; }; int main(void) { // Hier werden nicht alle Felder von Can initialisiert. // Dazu werde eine falsche Initialisierung für das Feld CanData1 gewählt. struct Can msg1={0x100, 0x01, {0x11, 0x66}}; struct Can msg2={200, 2, {22}}; struct Can msg3={300, 3, {44}}; struct Can msg4={400, 4, {55}}; struct Can* data[] = {&msg1, &msg2, &msg3, &msg4}; // Datentyp für data_count fehlte size_t data_count = sizeof(data) / sizeof(*data); // hier sollen Zeiger ausgegeben werden // Daher die richtigen Formate wählen, und den Cast auf (void*) durchführen. printf("Adresse CanData1: %p , Adresse CanData2 :%p\n", (void*)&msg1.CanData1[0], (void*)&msg1.CanData1[1]); for (size_t i = 0; i < data_count; i++) { printf("CanID : 0x%x, CanLen: 0x0%x, CanData 1: 0x%x", data[i]->CanID, data[i]->CanLen, *data[i]->CanData1); for (size_t j = 0; j < SIZE_CAN_DATA; ++j) { printf("CanData1[%zu]: 0x%x,", j, data[i]->CanData1[j]); } printf ("\n"); } return EXIT_SUCCESS; }
 
- 
					
					
					
					
 Hallo John, 
 danke für die Hilfe. Genau das habe ich gesucht.Viele Grüße Michael