4

偶然にも、これdisp(fprintf())は fprintf の文字列とそれに含まれる文字数を出力することを発見しました。が冗長であることは知っていますdisp()が、純粋な好奇心から、なぜ文字数が出力されるのかを知りたいのです。これはいつか実際に役立つかもしれないからです。
例えば

disp(fprintf('Hi %i all of you',2))

結果は

こんにちは 2 皆さん 15

4

2 に答える 2

11

質問で言及されている特定の動作の理由はfprintf、ストレージ変数を使用したFILEprintf の呼び出しです。

nbytes = fprintf(___)fprintf前述の構文の入力引数のいずれかを使用して、書き込むバイト数を返します。

したがって、最初にストレージ変数なしでdisp(fprintf(...))テキストを出力しますが、文字列のバイト数であるのストレージ変数のみを表示するため、出力が表示されます。fprintfdispfprintf

さらに、文字列を表示したい場合は STRINGprintf: が必要ですsprintf:

disp(sprintf('Hi %i all of you',2))
Hi 2 all of you

ドキュメントが私に示しているのは、テキストファイルへの書き込みsprintf中に、グラフへのテキストの追加、連続したファイル名の設定などに使用できる文字列の書式設定にのみ使用されることです。fprintf

str = sprintf(formatSpec,A1,...,An)列の順序に従って配列A1内のデータをフォーマットし、結果を string に返します。AnformatSpecstr

fprintf(fileID,formatSpec,A1,...,An)を配列,...formatSpecのすべての要素に列順に適用し、データをテキスト ファイルに書き込みます。への呼び出しで指定されたエンコード方式を使用します。A1Anfprintffopen

fprintf(formatSpec,A1,...,An)データをフォーマットし、結果を画面に表示します。

したがって、画面にテキストを表示するにはdisp(sprintf())またはfprintfは等しいですが、結果を文字列に保存する場合は使用するsprintf必要があり、テキスト ファイルに書き込む場合は を使用する必要がありますfprintf

于 2015-11-04T11:02:11.037 に答える
7

のドキュメントでは、からの出力が印刷されたバイト数であるfprintfことがわかります。fprintfここでは、fprintfが印刷Hi 2 all of youしており、dispが によって返された 15 を印刷していfprintfます。

于 2015-11-04T10:44:23.857 に答える