在Matlab中将字符串按原样写入文件

3
在Matlab脚本中,我正在生成一个LaTeX表格。例如,该表格的一部分如下所示。
\multirow{2}{*}{\textbf{b1}}
&
2 & 3 & 10092 & 10763 & 103390 & 2797 & 2929 & 3008 & 5\% & 8\% \\
& 4 & 2 & 20184 & 10763 & 74508 & 1830 & 1970 & 2029 & 8\% & 11\% \\

这个字符串保存在变量str中。现在,当我尝试使用以下代码将str写入文件时。

f = fopen( 'report\results.tex', 'w' );
fprintf( f, str );
fclose(f);

我收到了以下警告。
Warning: Invalid escape sequence appears in format string. 
See help sprintf for valid escape sequences.

这可能是由于我的字符串中有许多反斜杠字符,它们被用作转义序列。现在我该如何将这个字符串原封不动地打印到文件中。


你试过使用fwrite(f, str);吗? - Ben A.
1个回答

4

转义反斜杠和百分号:

str = strrep(str,'\','\\');
str = strrep(str,'%','%%');

如果你只是打印文本,这个就可以了。
最小化工作示例:
str = '2 & 3 & 10092 & 10763 & 103390 & 2797 & 2929 & 3008 & 5\% & 8\% \\'
str = strrep(str,'\','\\');
str = strrep(str,'%','%%');
f=fopen('testing123.txt','w');
fprintf(f,str);
fclose(f);

文件内容如下:

2 & 3 & 10092 & 10763 & 103390 & 2797 & 2929 & 3008 & 5\% & 8\% \\

或者像Ben A.建议的那样,使用fwrite

fwrite(f,str)

我认为

fprintf(f,'%s',str)

也可以使用will来实现,最好还要包括一个换行符:

fprintf(f,'%s\n',str)

这在我有双反斜杠(\\)的地方不起作用。 - pythonic
似乎您还需要转义百分号字符,请参见更新 ^^ - Gunther Struyf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接