在八度音程中,printf给出了奇怪的错误

时间:2012-08-15 21:04:05

标签: linux matrix printf cell octave

在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

此错误消息无效,谷歌不知道这个错误是什么!怎么了?

1 个答案:

答案 0 :(得分: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试图理解废话。查看此网页,了解哪些可以和不可以传递到八度的printf:

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