使用fprintf时没有换行

时间:2019-05-16 13:00:25

标签: matlab console printf newline error-logging

我为pyhtagorean值写了一个小函数:

function c = pyth(a,b)
% Takes two inputs of same size and returns the pythagorean of the 2 inputs
if size(a) == size(b) % checks for same size
    c = sqrt(a.*a + b.*b);  % calculates the pythagorean value
else
    fprintf('Error: Input sizes are not equal'); % returns if sizes are not the same
end

它可以正常工作,但是返回后,“ >>”与我的输出在同一行,而不是输出下方的换行。 fprintf只有这种情况。在这里:

>> pyth([1 2;3 4],[5 6;7 8])
ans =
    5.0990    6.3246
    7.6158    8.9443
>>
>> pyth([1 2],[1 2;3 4])
Error: Input sizes are not equal>> 

我该如何解决?

2 个答案:

答案 0 :(得分:3)

使用\ n换行符:

fprintf('Error: Input sizes are not equal\n');

答案 1 :(得分:3)

fprintf通常用于写入文件(因此开头是f)。写入(文本)文件时,确保与操作系统无关的换行符的方法是在字符串的末尾添加\r\n(又名CRLF或[char(10) char(13)])。看来,在打印到控制台时,这并不重要(即\n也可以在Linux上运行的MATLAB中工作)。

几个提示:

  • 您可以改用dispdisplay,因为它们会为您添加换行符。
  • 如果要显示错误,为什么不使用error
  • 如果您使用fprintf来打印错误,则可能要以fprintf(2, ... )开始,因为这会将文本打印到stderr,从而使其颜色错误(通常为红色)。