在 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
这个错误信息没有帮助,谷歌不知道这个错误是什么!怎么了?
找到了这个错误的解决方案。
您传入的第一个参数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