Ik heb een eigen programma die schrijft naar een file met de functie fwrite. na zo'n functie wordt de automatisch de pointer in de file opgehoogd. Nu herschrijf ik dit gedeelte naar een memcopy. Nadat er 20 memcpy's gedaan zijn wil ik al de gekopieerde data in 1 keer wegschrijven met een fwrite.
Het probleem zit erin dat het adres waar geschreven wordt in het geheugen niet opschuift automatisch. Hierdoor schijf ik telkens over het vorige stuk heen ipv erachteraan. Dus dacht ik dan doe ik dat zelf even. Alleen als ik kijk tijdens het debuggen zie je de void* niet opschuiven. Hebben jullie een verklaring hiervoor?
De manier hoe het was is zo:
nitems = fwrite((uint8 *)buffer, sizeof(uint32), (ptr->currword + 1), bbPtr->filePtr);
Wat ik nu zelf geschreven heb al vervanger daarvan is dit.
memcpy(bbPtr->voidPtr, buffer, ptr->currword + 1);
*(char far*)bbPtr->voidPtr += (ptr->currword + 1) * 32;
Na de laatste actie blijft de bbPtr nog steeds naar het zelfde geheugenadres pointen.
Het probleem zit erin dat het adres waar geschreven wordt in het geheugen niet opschuift automatisch. Hierdoor schijf ik telkens over het vorige stuk heen ipv erachteraan. Dus dacht ik dan doe ik dat zelf even. Alleen als ik kijk tijdens het debuggen zie je de void* niet opschuiven. Hebben jullie een verklaring hiervoor?
De manier hoe het was is zo:
nitems = fwrite((uint8 *)buffer, sizeof(uint32), (ptr->currword + 1), bbPtr->filePtr);
Wat ik nu zelf geschreven heb al vervanger daarvan is dit.
memcpy(bbPtr->voidPtr, buffer, ptr->currword + 1);
*(char far*)bbPtr->voidPtr += (ptr->currword + 1) * 32;
Na de laatste actie blijft de bbPtr nog steeds naar het zelfde geheugenadres pointen.