在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
此错误消息无效,谷歌不知道这个错误是什么!怎么了?
答案 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