a)
For dato:
function serialized = serializeDate ( date ) d = int2str ( date . day ); m = int2str ( date . month ); y = int2str ( date . year ); datestring = sprintf('%02i.%02i.%02i', d,m,y); end
Eller:
function serialized = serializeDate ( date ) d = int2str ( date . day ); m = int2str ( date . month ); y = int2str ( date . year ); if date . day < 10 d = strcat ('0', d); end if date . month < 10 m = strcat ('0', m); end serialized = strcat (d, '.', m, '.', y); end
For person:
function [ personSerial ] = serialize_person( person ) personSerial = sprintf('%s#%s#%s',person.name, serializeDate(person.dateOfBirth), person.phone); end
Eller:
function serialized = serializePerson ( person ) n = person. name ; d = serializeDate (person.dateOfBirth); p = int2str(person.phone); serialized = strcat(n, '#', d, '#', p); end
b)
Har mange løsninger. Deriblant:
function deserialized = deserializeDate ( date ) [tok, rest] = strtok(date, '.'); d = str2num(tok); [tok, rest] = strtok(rest, '.'); m = str2num(tok); tok = strtok(rest, '.'); y = str2num(tok); deserialized = struct('day', d, 'month', m, 'year', y); end
function deserialized = deserializePerson ( person ) [tok, rest] = strtok(person, '#'); n = tok ; [tok, rest] = strtok(rest, '#'); d = deserializDate(tok); tok = strtok(rest, '#'); p = str2num(tok); deserialized = struct('name', n, 'dateOfBirth', d, 'phone', p); end
Eller:
function [ dStruct ] = deserializeDate( datestring ) [day, month, year] = strsplit(datestring, '.'); dStruct=struct('day', day, 'month', month, 'year', year); end
function deserialized = deserializePerson ( person ) [name, dateSerial, phone] = strsplit(person, '#'); date = deserializDate(dateSerial); deserialized = struct('name', name, 'dateOfBirth', date, 'phone', phone); end
c)
function store ( filename , persons ) fileID = fopen ( filename , 'w'); for p = persons fprintf ( fileID , '%s\n', serializePerson (p)); end fclose ( fileID ); end
d)
function listOfPersons = loadfile ( filename ) listOfPersons = []; fileID = fopen ( filename , 'r'); line = fgets ( fileID ); while ischar ( line ) person = deserializePerson ( line ); listOfPersons = [ listOfPersons person ]; line = fgets ( fileID ); end fclose ( fileID ); end