Why is this fprintf not wprking correctly?

studentNames = ["Amy", "Flynn", "Barbara", "George", "Jonathan", "Isaac", "Cindy", "Hank", "Elaine", "Debbie"];
Test1 = [79, 71, 98, 68, 65, 97, 72, 68, 68, 82];
Test2 = [61, 94, 98, 66, 91, 90, 76, 86, 67, 88];
Final = [68, 84, 85, 90, 91, 85, 88, 80, 51, 72];
fileID = fopen('Students.txt','w');
%% A.
for i = 1: length(studentNames)
Avg1 = Test1 * .3;
Avg2 = Test2 * .3;
Avg3 = Final * .4;
TotalAvg = Avg1 + Avg2 + Avg3;
end
fprintf(fileID, '%s has an average of %g \r\n', studentNames,TotalAvg);

2 Comments

Daniel M
Daniel M on 28 Oct 2019
Edited: Daniel M on 28 Oct 2019
But it is working correctly. Just because you want it to work a certain way, and don't know how to achieve that, doesn't mean there is a bug in the code. fprintf prints in column order.
I want it to print a name as %s and the average at %g and it is not doing that.

Sign in to comment.

Answers (2)

array = [studentNames;string(TotalAvg)];
fprintf('%s has an avg of %g\r\n',array);
You are already using string objects so you might as well use compose() to format the text, possibly fwrite() the results

Categories

Tags

Asked:

on 28 Oct 2019

Answered:

on 28 Oct 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!