3

在 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.

这可能是由于我的字符串中有许多反斜杠字符,它们被用作转义序列。现在我怎样才能将这个字符串按原样打印到文件中。

4

1 回答 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)

也可以解决问题,最好还包括一个换行符:

fprintf(f,'%s\n',str)
于 2012-07-17T13:31:00.130 回答