2

我必须阅读这样的文件

10001   3          5.0000      30.0         0.0000      25.6         0.0000      10.0
10002   1         25.0000                   0.0000                   4.6887      58.2
10003   5         45.0000      20.0         0.0000                  14.7608          
10004   5         65.0000                   0.0000                   8.8791          
10005   1         85.0000                   0.0000                   6.3128      00.0

像这样的文件格式'%5i%5i%%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f'

我正在使用以下代码

n_xyz_filename = input('\nSelect the file. ', 's');
n_xyz_file = fopen(n_xyz_filename, 'r');
n_xyz = textscan(n_xyz_file, '%5i%5i%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');
fclose(n_xyz_file);

但我不断收到以下错误

???使用 ==> textscan 时出错 格式错误的格式字符串。

我真的看不下去了!

编辑

正如答案所说,正确的代码是:

n_xyz_filename = input('\nSelect the file. ', 's');
n_xyz_file = fopen(n_xyz_filename, 'r');
n_xyz = textscan(n_xyz_file, '%5d%5d%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');
fclose(n_xyz_file);

用“d”(代表十进制)而不是“i”

4

1 回答 1

2

问题是格式说明符i,它不能被textscan. 如果你想表示一个整数,你应该使用d. 因此,正确的语法是:

n_xyz = textscan(n_xyz_file, '%5d%5d%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');
于 2013-04-29T10:33:07.777 回答