I hans exempel (som fungerar när jag compilerar) så har han deklarerat följande i en struct:
unsigned long start_sector;
När jag våghalsigt nog försökte skriva en egen, så tänkte jag "det borde ju lika gärna gå att använda Char och bestämma storleken själv?", så här:
unsigned char start_sector[4];
Men det resulterade i att jag fick ett helt annat resultat, trots att dom båda borde ta upp samma mängd bytes, 4?
när jag skriver ut sizeof av char variabeln, och long variabeln, så är dom lika stor, 4 bytes. Varför blir det fel?
Jag har skrivit ett litet program som öppnar image filen i binary, och försöker läsa in 4 bytes från en adress. Först en till Char variabel, sen en till Long variabel bara för att testa. Här är koden och filen och Tutorialen jag läser: http://codeandlife.com/2012/04/02/simpl ... mment-8343
Kod: Markera allt
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE * in = fopen("test.img", "rb");
unsigned int i; //commenting this out and the program will crash when using CharLBA? wtf?
unsigned char CharLBA[4];
fseek(in, 0x1C6, SEEK_SET); // go to partition table LBA start adress
fread(CharLBA, 8, 1, in);
printf("Relative LBA address 0x%08X\n", CharLBA);
unsigned long LongLBA = 0;
fseek(in, 0x1C6, SEEK_SET); // go to partition table LBA start adress
fread(&LongLBA, 8, 1, in);
printf("Relative LBA address 0x%08X\n", LongLBA);
printf("%d\n", sizeof(CharLBA));
printf("%d\n", sizeof(LongLBA));
fclose(in);
return 0;
}