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

この文字列は variable に保存されますstrstr次のコードを使用してファイルに書き込もうとすると、次のようになります。

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 に答える