a)
For dato:
function serializedDate = serializeDate ( date ) serializedDate = sprintf('%02i.%02i.%04i', date.day, date.month, date.year); end
For person:
function serializedPerson = serializePerson( person ) serializedPerson = sprintf('%s#%s#%i',person.name, serializeDate(person.dateOfBirth), person.phone); end
b)
For dato:
function deserialized = deserializeDate ( datestring ) [tok, rest] = strtok(datestring, '.'); day = str2num(tok); [tok, rest] = strtok(rest, '.'); month = str2num(tok); tok = strtok(rest, '.'); year = str2num(tok); deserialized = struct('day', day, 'month', month, 'year', year); end
For person:
function deserialized = deserializePerson ( personstring ) [tok, rest] = strtok(personstring, '#'); name = tok ; [tok, rest] = strtok(rest, '#'); date = deserializeDate(tok); tok = strtok(rest, '#'); phone = str2num(tok); 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