在matlab脚本中,我正在生成一个乳胶表。例如,该表的一部分看起来像这样。
\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.
这可能是由于我的字符串中有许多反斜杠字符,用作转义序列。现在我该如何将这个字符串打印到文件中。
答案 0 :(得分: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)
也会做到这一点,最好还包括换行符:
fprintf(f,'%s\n',str)