2013-11-22 2 views
0

Я имею функциюФункция, которая создает список персоналий

fid = fopen(filename,'w'); 

if exist('fid') 
    check = true; 
else 
    check = false; 
end 


for i=1:length(persons) 
    fprintf(fid, '%s\n',serialize_person(persons(i))); 
end 
end 

Где serialize_person является

function [output] = serialize_person(person) 

fprintf ('<%s>#' , person.name) ; 
serialize_date (person.date_of_birth) ; 
fprintf ('#<%i>\n' , person.phone) ; 

end 

Который берет является персоналий и выписывает «name.day.month.year.phonenumber» Во-первых, мне нужно сделать это как единую строку текста в 'output', чтобы он (я предполагаю) работал в первой функции, как бы я об этом поступил?

Во-вторых, первая функция принимает имя файла и ячейку лиц. Я хочу, чтобы он появился в текстовом файле с именем «filename» с одной линией в строке. Вчера я работал над циклом for, но почему-то я не могу выйти за первую строчку сегодня, не получив сообщение об ошибке. Не могли бы вы дать мне несколько советов здесь, я не знаю, что случилось.

+0

Любая удача с этой проблемой? – chappjc

ответ

0

Чтобы записать вывод в массив символов, а не в консоль, используйте sprintf. Кроме того, чтобы присоединиться струны с '.' между строками, попробуйте strjoin с набором разделителей:

function [output] = serialize_person(person) 
    delim = '.'; 
    output = strjoin(sprintf ('<%s>#' , person.name), ... 
        serialize_date (person.date_of_birth), ... 
        sprintf ('#<%i>\n' , person.phone), delim); 

end 

Изменить serialize_date аналогично.

Смежные вопросы