1 IE 4.3310 11089 2 NI 2.8207 7222 3 RZ 1.7162 4394 4 WI 1.5857 4060 5 NA 1.5510 3971 6 PO 1.5080 3861 7 ZE 1.4354 3675 8 CH 1.4150 3623 9 CZ 1.3936 3568
我有类似的东西。我写了这个fscanf的格式:
fscanf(file_id, "%d %s %f %d")
例如 - 第一行 - 我希望:
[1, 'IE', 4.3310, 110890]
我明白了:
[1.00, 49.0, 45.0, 4.3310, 110890]
它将char转换为整数,之后浮动,但是你能告诉我如何避免这种情况吗? 如果可能的话。
答案 0 :(得分:3)
FSCANF仅返回数字(或char)数组。我建议将TEXTSCAN用于混合数据。
fid = fopen(filename, 'rt');
A = textscan(fid, '%d %s %f %d', 'delimiter','\t');
fclose(fid);
A
将是一个单元格数组。
答案 1 :(得分:0)
请改用textscan
。 E.G:
fid = fopen('testfile.dat');
result = textscan(fid,'%d %s %f %d');
fclose(fid)
现在result
是具有相应数据类型的列的单元格数组。例如:
>> result
result =
[9x1 int32] {9x1 cell} [9x1 double] [9x1 int32]
>> result{1}
ans =
1
2
3
4
5
6
7
8
9
>> result{2}
ans =
'IE'
'NI'
'RZ'
'WI'
'NA'
'PO'
'ZE'
'CH'
'CZ'