(Bitte keinen neuen Thread für altes Zeug. Das macht es Anderen, die
den Thread nachträglich verfolgen, praktisch unmöglich, die Auflösung
zu erkennen. Außerdem erschwert es das Antworten.)
> ich hab doch praktisch nur ein pointer der auf ne struktur innerhalb
> des puffers zeigt, übergeben.
Nein, du hast ein einzelnes Strukturelement kopiert, also nur den
ersten Eintrag deiner fdisk-Tabelle extrahiert. Das ist erstens
zusätzlicher Aufwand, schon von daher vermeidet man sowas eher,
zweitens kannst du den Pointer nicht anschließend auf den nächsten
Eintrag der Tabelle weiterschalten. In ganz altem C (pre-C89, das
sogenannte ,,K&R-C'') konnte man Strukturen nicht direkt (ohne
memcpy()) kopieren, schon daher ist das ein Feature, was
C-Programmierer auch heute nur eher spärlich benutzen.
Deine Variante hätte korrekt ungefähr so ausgesehen:
1 | void readPe1(unsigned char *buffer,struct tPartitionEntry **pe){
|
2 | MMC_read_sector(0,buffer);
|
3 | *pe = (struct tPartitionEntry *)&buffer[PART_ENTRY_ONE];
|
4 | }
|
5 |
|
6 |
|
7 | int main(void) {
|
8 | unsigned char buffer[512];
|
9 | struct tPartitionEntry *pe;
|
10 |
|
11 | readPe1(buffer,&pe);
|
12 | return 0;
|
13 | }
|
Du solltest dir das Kapitel über Zeiger und Felder in deinem
C-Lehrbuch nochmal durchlesen...