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,

Другие вопросы по тегам