Archief - C: Struct met variable length string wegschrijven & uitlezen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tha_rippa1be

Legacy Member
Bij een struct met vaste lengte strings kan je gemakkelijk eev variabele van dat type wegschrijven en uitlezen naar een bestand.
bvb:
Code:
typedef struct persoon_t {
    char Naam[25];
} Persoon;

Persoon p;
strcpy(p.Naam, "joske");
fwrite(&p, sizeof(Persoon), 1, fp);

fread(&p, sizeof(Persoon), 1, fp);
werkt zonder problemen.

Maar als ik van naam een char* maak werkt alles niet meer zo simpel.
Hoe kan ik een struct van dat formaat wegschrijven en terug inlezen?
Code:
typedef struct persoon_t {
    char *Naam;
} Persoon;

Chaoz

Legacy Member
Als ge een variabele gebruikt van een unknown length gebruikt moet ge de lengte ook opslaan in een variabele en schrijven naar u file.

Chaoz zei:
typedef struct persoon_t {
unsigned short NaamLength;
char *Naam;
} Persoon;

en dan schrijft ge eerst uw NaamLength member naar u file, en dan Naam.
Voor het uitlezen leest ge eerst u NaamLength uit en dan weet ge het aantal bytes dat ge moet uitlezen voor Naam.

tha_rippa1be

Legacy Member
Chaoz zei:
Als ge een variabele gebruikt van een unknown length gebruikt moet ge de lengte ook opslaan in een variabele en schrijven naar u file.



en dan schrijft ge eerst uw NaamLength member naar u file, en dan Naam.
Voor het uitlezen leest ge eerst u NaamLength uit en dan weet ge het aantal bytes dat ge moet uitlezen voor Naam.

Dus elke variabele apart wegschrijven ipv heel de struct ineens?
Dat was het geen dat ik al vreesde, ik had gehoopt dat het makkelijker ging gaan :)
(Ik he in de struct die ik gebuik 3 strings staan, dus dat zijn al 6 fwrites)

Bedankt.

blackrabbit

Legacy Member
Lengte schrijven naar de file hoeft niet als je een delimiter gebruikt...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan