2

GNU Octaveでは、このコードでエラーが発生します。

A = cell(10,1);
A{5,1} = "foobar";
outputFile = fopen("mytext.txt", "w");
printf(outputFile, "%s", A{5,1});

このエラーが発生します:

error: printf: format TEMPLATE must be a string

このエラーメッセージは役に立ちません。グーグルはこのエラーが何であるかを知りません!なにが問題ですか?

4

1 に答える 1

2

このエラーの解決策を見つけました。

渡す最初のパラメーターはprintf、有効なフォーマット文字列でなければなりません。ファイルハンドルを渡しています。ファイルハンドルを渡したい場合は、fprintf代わりに使用する必要があります。最初のパラメーターをファイルとして指定すると、printf で上記のエラーが発生します。

代わりにこれを行う必要があります:

A = cell(10,1);
A{5,1} = "foobar";
outputFile = fopen("mytext.txt", "w");
fprintf(outputFile, "%s", A{5,1});        

または、画面に出力したい場合は、outputFile パラメーターを削除します。

A = cell(10,1);
A{5,1} = "foobar";
outputFile = fopen("mytext.txt", "w");
printf("%s", A{5,1});
% Here printf successfully casts the cell as a string.  no error.

printf に不正なパラメータを渡しており、Octave は意味をなさないことを理解しようとしています。この Web ページを参照して、octave の printf に渡せるものと渡せないものを確認してください。

http://www.gnu.org/software/octave/doc/interpreter/Formatted-Output.html#doc-printf

于 2012-08-15T21:07:30.717 に答える