Avatar billede tycho Nybegynder
25. april 2003 - 16:03 Der er 7 kommentarer og
1 løsning

Dynamisk størrelse af array.

Dav.
Jeg er ved at lave et program til at lagre filer, og jeg skal bruge et array stort nok til at indeholde en given fil.
jeg har prøvet:
char* container = new char[size];//size skal så være filens størrelse (som jeg har fundet længere oppe).
Men container's størrelse bliver kun 4 bytes af dette (ligemeget hvilken størrelse size er på).
Har jeg gjort noget forkert, eller kan dette simpelthed ikke lade sig gøre?
Avatar billede arne_v Ekspert
25. april 2003 - 16:05 #1
Nej du allokerer size bytes.

sizeof(container) returnerer ikke størrelsen på det dynamisk array,
men størrelsen på en pointer !
Avatar billede tycho Nybegynder
25. april 2003 - 16:07 #2
okay!
Tak for svaret.
Er der så noget andet jeg kan gøre for at få et array med en "ikke-forudbestemt" størrelse?
Avatar billede arne_v Ekspert
25. april 2003 - 16:10 #3
Ikke forstået.

Det er helt fint og bør virke.

char *container = new char[100];

allokerer 100 bytes som du kan bruge.

Du skal bare selv holde styr på hvor mange bytes du har allokeret,
da sizeof(container) returnerer sizeof(char*) som er 4 på mange
platforme.
Avatar billede arne_v Ekspert
25. april 2003 - 16:11 #4
Du kan også bruge den gamle C måde:

char *container = (char *) malloc(100);

men der bliver stadigvæk allokeret 100 bytes og
sizeof(container) returnerer stadig kun 4.
Avatar billede tycho Nybegynder
25. april 2003 - 16:14 #5
Okay, jeg forstår hvad du mener nu (gjorde jeg ikke før).
men problemet er at størrelsen på array'et skal stemme overens med størrelsen på en fil (som bliver bestemt af brugeren), så jeg kan derfor ikke bare skrive et tal.
Så er det muligt at sætte størrelsen på et array, til f.eks et INT, defineret af programmet?
Avatar billede arne_v Ekspert
25. april 2003 - 16:17 #6
Ja.

Din brug af en variabel size er også helt iorden.
Avatar billede arne_v Ekspert
25. april 2003 - 16:18 #7
int size = 100;
char* container = new char[size];
for(int i=0;i<100;i++) container[i]='A';

er helt legal.

(du vil så sætte size til størrelsen af filen og læse filen op
i arrayet i.s.f. dette meget simple eksempel)
Avatar billede tycho Nybegynder
25. april 2003 - 16:19 #8
Thee art meh saviour!
60 point er hermed gevet ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester