disp(fprintf()) печатает fprintf и количество символов. Зачем?
По совпадению я обнаружил, что disp(fprintf())
печатает строку fprintf плюс количество символов в ней Я знаю, что disp()
является избыточным, но просто из чистого любопытства я хочу знать, почему он печатает количество символов, так как это может быть действительно полезно однажды.
Например
disp(fprintf('Hi %i all of you',2))
результаты в
Привет всем вам 15
2 ответа
Причиной специфического поведения, упомянутого в вопросе, является вызов FILEprintf. fprintf
с переменной хранения:
nbytes = fprintf(___)
возвращает количество байтов, которыеfprintf
пишет, используя любой из входных аргументов в предыдущих синтаксисах.
Так что же происходит, что disp(fprintf(...))
сначала печатает текст согласно fprintf
без переменной хранения, но disp
видит только переменную хранения fprintf
, которое является числом байтов вашей строки, отсюда и вывод.
Кроме того, если вы хотите отобразить строки, вам нужен STRINGprintf: sprintf
:
disp(sprintf('Hi %i all of you',2))
Hi 2 all of you
Что документы показывают мне, что sprintf
используется исключительно для форматирования строк, которые можно использовать для добавления текста в график, настройки последовательных имен файлов и т. д. fprintf
пишет в текстовый файл.
str = sprintf(formatSpec,A1,...,An)
форматирует данные в массивахA1
,...,An
в соответствии сformatSpec
в порядке столбцов и возвращает результаты в строкуstr
,
fprintf(fileID,formatSpec,A1,...,An)
применяетformatSpec
ко всем элементам массивовA1
,...An
в порядке столбцов и записывает данные в текстовый файл.fprintf
использует схему кодирования, указанную в вызовеfopen
,
fprintf(formatSpec,A1,...,An)
форматирует данные и отображает результаты на экране.
Поэтому для отображения текста на экране disp(sprintf())
или же fprintf
равны, но если вы хотите сохранить результаты в строке, вы должны использовать sprintf
и если вы хотите записать его в текстовый файл, вы должны использовать fprintf
,
В документе о fprintf
Вы видите, что выход из fprintf
количество напечатанных байтов. Итак, здесь fprintf
печатает Hi 2 all of you
и disp
печатает 15 вернул fprintf
,