2012-07-17 83 views
3

在matlab脚本中,我生成了一个乳胶表。例如,该表的一部分看起来像这样。将字符串原样写入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

你尝试使用'FWRITE(F,STR);'? – 2012-07-17 13:32:19

回答

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\% \\ 

或作为本A.表明,使用fwrite

fwrite(f,str) 

,我认为

fprintf(f,'%s',str) 

也将这样的伎俩,而且最好还包括一个新行:

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

这在我使用双反斜杠(\\\)的地方不起作用。 – pythonic 2012-07-17 13:34:15

+0

看来你还必须逃避百分比字符,看到更新^^ – 2012-07-17 13:46:34