MATLAB Answers

How to have a variable format spec print length when using fprintf?

14 views (last 30 days)
I am trying to print column header information to a .txt file using fprintf. I am importing the column header information from another file. The problem is that the imported column header information can be any character length, as defined by the user (e.g. could be 1 character long, could be 20). I would like to use the maximum header length to define how much space will be needed when printing the column headers/labels. The code in question is summarized below:
for i = 1:length(headerinformation)
fprintf(fid,'%10s',headerinformation{i})
end
The default amount of space I am using is 10 (i.e. %10s), but this doesn't work well when the headers are > 10. At first i tried using the maximum header lenth variable to define the maximum header length, but this didn't work properly when using the fprintf format spec. I tried something similar to the following:
MaxHeaderLength = max(cell2mat(columnheaderlength));
for i = 1:length(headerinformation)
fprintf(fid,'%(%i)s',headerinformation{i}, MaxHeaderLength) %parenthesis around %i added for explanation only, i know this wouldn't actually work
end
Any guidance would be appreciated.

  0 Comments

Sign in to comment.

Accepted Answer

Jess Lovering
Jess Lovering on 15 Aug 2019
Would this work for what you need?
MaxHeaderLength = max(cell2mat(columnheaderlength));
max_fmt_spec = ['%' num2str(MaxHeaderLength) 's'];
for i = 1:length(headerinformation)
fprintf(fid,max_fmt_spec,MaxHeaderLength)
end

  0 Comments

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Tags