Matlab textscan 只能读取一行,原来是换行符在捣鬼 2017-06-15 10:40:42

Matlab textscan 只能读取一行,原来是换行符在捣鬼 - 葱油肉包 - 葱油肉包

 读取数据时,用了底层读取命令

fid =  fopen(filename)

C = textscan(fid,'format', lines,'headerlines',lines);

fclose(fid)

 

然而2013 2014都可以一次读取一列,只是到了15 16怎么也只能读一行

看不出区别来,但是,用ultraedit打开这些文件时,发现2013 2014的都会提示

Matlab textscan 只能读取一行,原来是换行符在捣鬼 - 葱油肉包 - 葱油肉包

 

但是2015 2016都没有这个提示,结合只能读取1行,猜测或许是不同操作系统下换行符的区别

将2015 2016两个文件都另存,并将换行符选择为Unix系统。

再次运行程序,果然就正常了,bingo

 

RF

在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符. 

 

Dos和windows: 采用回车+换行CR/LF表示下一行. 

UNIX/Linux  : 采用换行符LF表示下一行. 

MAC OS      : 采用回车符CR表示下一行. 

 

CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D; 

LF用符号'\n'表示, 十进制ASCII代码是10, 十六制为0x0A. 

 

所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示. 

 

一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。 

 

在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时,有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错。 

 

很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换。在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换。经过这种传输的文件字节数可能会发生变化。如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本。 

 

表一: 

标志CRLF 

符号 十进制Ascii码数 十六进制数 

\r 13 0x0D 

\n 10 0x0A 

 

 

表二: 

标志换行 

Win/Dos linux,Unix等 

\r\n(<CR><LF>) \n(<LF>)                     

 

 

所以在用println函数的时候,导致的换行在不同操作系统中可能不一样,在windows下表现的是“\r\n”,使用的时候要注意。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值