我试图将char()
函数的输出传递给fprintf
,以便我可以将多行写入文本文件。问题在于fprintf(fid,'%s\n', str)
忽略了所有行之间的空格,而是打印出一条大行。我想打印str
,而不会丢失新的行。fprintf matlab中的字符函数:写入文件时保留新行
str = (char(textlinepre));
filename = 'newfile.dat';
fid = fopen(filename,'w');
fprintf(fid,'%s\n', str);
fclose(fid);
原始的DAT /文本文件的内容,这被读入作为字符串的单元阵列到可变textlinepre
。
%Created with Spacar 2.0.25 at 18-05-17, 11:43:37
% leafspring1
BEAM 1 1 2 3 4 0.0000000000 1.0000000000 0.0000000000
% solid bar
BEAM 2 3 4 5 6 0.0000000000 0.0000000000 1.0000000000
% leafspring2
BEAM 3 5 6 7 8 0.0000000000 1.0000000000 0.0000000000
X 1 0.0000000000 0.0000000000 0.0000000000
X 3 0.0000000000 0.1000000000 0.1000000000
X 5 0.0000000000 0.0000000000 0.1000000000
X 7 0.0000000000 0.1000000000 0.0000000000
FIX 1 1
FIX 1 2
FIX 1 3
FIX 2 2
FIX 2 3
FIX 2 4
FIX 7 1
FIX 7 2
FIX 7 3
FIX 8 2
FIX 8 3
FIX 8 4
RLSE 3 1
RLSE 3 2
RLSE 3 3
RLSE 3 4
RLSE 3 5
RLSE 3 6
DYNE 1 1
DYNE 1 2
DYNE 1 3
DYNE 1 4
DYNE 1 5
DYNE 1 6
END
HALT
XF 3 0.000000000000 0.000000000000 0.000000000000
EM 1 0.070650000000 0.000001909022 0.000001907550 0.000000001472 0.000000000000
EM 2 1.999400000000 0.000094804883 0.000066646667 0.000028158217 0.000000000000
EM 3 0.070650000000 0.000001909022 0.000001907550 0.000000001472 0.000000000000
ESTIFF 1 1890000.000000000000 0.058028906301 51.030000000000 0.039375000000 0.000000000000 0.000000000000
ESTIFF 3 1890000.000000000000 0.000000000000 0.000000000000 0.039375000000 0.000000000000 0.000000000000
EDAMP 1 0.365400000000 0.000006500000 0.000190000000 0.000005300000
EDAMP 3 0.365400000000 0.000000000000 0.000000000000 0.000005300000
TIMESTEP 10.00 50
ITERSTEP 10 10 0.00005
END
END
VISUALIZATION
BEAMVIS 1 0.000500000000 0.018000000000
BEAMVIS 2 0.013000000000 0.020000000000
BEAMVIS 3 0.000500000000 0.018000000000
VIBRATIONMODE 1
VIBREND 7.854
ENLARGEFACTOR 0.01
TRANSPARENCY 0.6
是的,你是对的,我很抱歉,我试过编辑它变成了一个更清晰的表述。 –
给我们一个'textlinepre'的例子吗?你目前只是在你的整个字符串后面打印一个新的行,而不是在其中的给定点... – Wolfie
我没有得到的是如何在每个字符串(行)后插入一个输入。 –