[C++] Array van file handles geeft problemen

Pagina: 1
Acties:

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Hoi,

Ik probeer in een C++ programma een array van FILE handles aan te maken en dit geeft problemen.

Het array maak ik als volgt aan.
C++:
1
FILE *FileHandles = new FILE[intNumExtraCopies];


Vervolgens wil ik files openen en toekennen aan iedere file handle in de array op de volgende manier.
C++:
1
2
3
for (int i = 0; i < intNumExtraCopies; i++) {
    FileHandles[i] = fopen((const char *)pszFile, "w+b");
}


Dit geeft echter de volgende compile error:
binary '=' : no operator defined which takes a right-hand operand of type 'struct _iobuf *' (or there is no acceptable conversion)

Uiteraard heb ik de help er op nageslagen en dit zou te maken hebben dat ik het resultaat van fopen probeer toe te kennen aan een variabele met een onjuist type.
FileHandles heb ik echter als type FILE * gedefineerd.

Het werkt wel als ik het resultaat van fopen toeken aan een 'gewone' variabele van het type FILE *.

Wat doe ik fout :?
P.S: Ik ben nog newbie met C++ dus maak me niet gelijk af :7

[ Voor 5% gewijzigd door pjonk op 28-05-2003 11:35 . Reden: opmaak ]

It’s nice to be important but it’s more important to be nice


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Is het niet FILE **FileHandles = new FILE*[intNumExtraCopies];?

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 22-08 21:48

BoAC

Memento mori

Je maak nu een array aan van FILE's. Wat je wil is een array van FILE pointers.

Dit doe je als volgt (Heb het getest want ik wist niet precies hoe het werkte ;) )

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    FILE **FileHandles = NULL;
    FileHandles = (FILE **)malloc(sizeof(FILE*) * 10);

    for (int i = 0; i < 10; i++) { 
        FileHandles[i] = fopen("c:\\test.txt", "rb");
    }

    char ch[100];
    for (i = 0; i < 10; i++) { 
        fread(ch, sizeof(char), 100, FileHandles[i]);
        TRACE0(ch);
        TRACE0("\n");
    }

    for (i = 0; i < 10; i++) { 
        fclose(FileHandles[i]);
    }

    delete FileHandles;


Ik gebruikte trouwens Visual C++ vandaar trace ;)

  • BoAC
  • Registratie: Februari 2003
  • Laatst online: 22-08 21:48

BoAC

Memento mori

SWfreak schreef op 28 May 2003 @ 12:10:
Is het niet FILE **FileHandles = new FILE*[intNumExtraCopies];?
ja kan ook ;)

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Jullie hebben helemaal gelijk en het klinkt ook allemaal heel logisch achteraf. Bedankt voor de hulp _/-\o_

It’s nice to be important but it’s more important to be nice


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

die oplossing van hem is goed itt die van jou
Jij alloceert namelijk geheugen met malloc (), en je geeft het weer vrij met delete. Dat is vragen om problemen.

Gebruik bij free () bij malloc (), delete bij new, en delete[] bij new[]

Het gebruik van new[]/delete[] is hier aan te raden aangezien er met C++ wordt gewerkt. Een STL container icm std::fstream is natuurlijk nog mooier, dan hoef je zelf geen memory management te doen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

P.S: Ik ben nog newbie met C++ dus maak me niet gelijk af
Hoezo we zijn toch altijd zulke schatjes ;)

Professionele website nodig?

Pagina: 1