Why is this fprintf not wprking correctly?

1 次查看(过去 30 天)
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 个评论
Daniel M
Daniel M 2019-10-28
编辑:Daniel M 2019-10-28
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.
Hunter Steele
Hunter Steele 2019-10-28
I want it to print a name as %s and the average at %g and it is not doing that.

请先登录,再进行评论。

回答(2 个)

Daniel M
Daniel M 2019-10-28
array = [studentNames;string(TotalAvg)];
fprintf('%s has an avg of %g\r\n',array);

Walter Roberson
Walter Roberson 2019-10-28
You are already using string objects so you might as well use compose() to format the text, possibly fwrite() the results

类别

Help CenterFile Exchange 中查找有关 Low-Level File I/O 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by