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 试图解释无意义。查看此网页以查看可以和不能传递到 octave 的 printf 中的内容:

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

于 2012-08-15T21:07:30.717 回答