数值如12345等可以作为字符,所以以字符格式读取文件时,这些数字照样可以被读取
A = fscanf(fileID,formatSpec)
A = fscanf(fileID,formatSpec,sizeA)
以上是fscanf的语法;
sizeA起到的作用是限制,限制读取读取文件中数据的数量;
举例来说:
John 1995 12 5 12.3 3.24
Tom 1995 12 7 2.3 2.0
Jean 1996 3 2 10.2 0
假如说文件中有这么一组数;
说明:每个空白间隔为一个数据
第一个数据为‘John’是一个字符串,读取的格式为fprintf(fid,'%s or %c',sizeA)
注意%s是读取字符串,不包括空白(即读取完后,数据之间无空白间隔);John199512512.3
而%c是逐个字符读取,包括空白(即读取完后,数据之间有空白间隔);John 1995 12 5
说完读取的部分,再来说说sizeA是如何控制fscanf函数的。sizeA=N的情形
(1)对于字符读取,采用%s
%s是一个字符串一个字符串进行读取的,fprintf(fid,'%s',sizeA)
sizeA可以使单个整数N,也可以是[m n]
我们先运行N,取值为1 3 5
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',1)
name =
'John'
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',2)
name =
'John1995'
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',5)
name =
'John199512512.3'
可以看到,%s每次读取一个字符串,前面提到,数字都可以当成字符串,但字符串不能当为数字
所以sizeA=1是读取一个字符串,sizeA=2时,读取两个字符串,5时读取5个字符串,并且没有空白间隔
所以sizeA其实就是控制fscanf读取数据的数目,
fscanf读取数据的时候是横向读取,而SizeA是控制读取的数目
(2)那么对于%c同样如此,只不过%c是一个一个字符去读,因此sizeA要扩大,比如读取第一个字符串John
对于%s,sizeA=1即可,但对于%c,则sizeA需要等于4才可读出。
(3)对于数值的读取同样代表读取的数据个数,但需要注意的是,%d指的是整数,%f指的是浮点数;我们看该文件第一行1995 12 5都是整数,如果写fscanf(fid,'%d',3)那么肯定能把这三个整数读到,并且按照列进行排列,如果写fscanf(fid,'%d',4),由于12.3由整数和小数两部分构成,因此小数点以前的12可以被读出来,但是小数点和小数点后的3无法读出来,因为不是整数。如果写fscanf(fid,'%d',5),照样只读到12.3的12就停止,因为不满足要求之后,fscanf会停止运行。返回之前读取的数据。
(4)fscanf 函数在整个文件中重新应用该格式,并将文件指针定位在文件结尾标记处。如果 fscanf 无法将 formatSpec 与数据相匹配,将只读取匹配的部分并停止处理
以上讲的都是sizeA=N的情形,接下来将sizeA=[m n]的情形
(1)对于字符串
字符串数据类型为char,char没有矩阵一说,字符串string的引用一般直接写str(i)即可,如str=’I love China‘, str(1)==I,str(5)==v,不能写为str(3,3),会报错:
str(3,3)
索引超出数组边界(不能超出 1)。
但是可以写str(1,3),相当于str(3);等于‘l'
因此,对于字符串,一般不需要也不用[m n].
(2) 对于数据类型
以此文件为例,由于第一个“john’为字符串,因此,直接运行fscanf(fid,'%d或%f',[m n])无法读取数据,因为数据类型不满足,会自动停止运行。
所以我们这里把Name列删除,删除之后为:
1995 12 5 12.3 3.24
1995 12 7 2.3 2.0
1996 3 2 10.2 0
这里我们可以看到,如果要想把所有数据读出来,sizeA用N表示应该为12。
另外该文件数据有整数和小数,如果用%d读的话,按行进行,遇到第一个小数点12.3,只会读取到12,点后边的就无法读取,因此要想把所有数据读出,需要用%f来进行。
我们执行fscanf(fid,'%f',[2 3]),得到结果如下:
A=fscanf(fid,'%f',[2 3])
A =
1.0e+03 *
1.9950 0.0050 0.0032
0.0120 0.0123 1.9950
发现fscanf从1995开始,共读取6个数据,并按照2行3列进行排列,到这里我们就会发现,对于数据类型,sizeA=[m n]
会使fscanf读取的数据个数为N=m*n个数据,并将他们按照m行n列进行排序,排序的时候,先进行列排序,再进行行排序,因此,行数m肯定是有限个数,n却可以使无穷大的,即inf。

fscanf不读取_思考了一天,终于把matlab的fscanf中的sizeA搞清楚了相关推荐

  1. java stream 多次读取_多次从具有大量数据的Java InputStream中读取

    我想知道什么是从Java InputStream多次读取字节并在流很大时仍然有效的最佳方法. 假设我有以下代码: public void handleBytes(InputStream in) { d ...

  2. 文件循环读取_一个案例轻松认识Python文件处理提取文件中的数字

    1.文件打开 使用 open() 函数打开文件.它需要两个参数,第一个参数是文件路径或文件名,第二个是文件的打开模式.模式通常是下面这样的: "r",以只读模式打开,你只能读取文件 ...

  3. java基于OpenCv图像处理_读取_保存图片

    java基于openCv图像处理_读取_保存图片 本文使用javaCV封装后的OpenCv <dependency><groupId>org.bytedeco</grou ...

  4. 摄像头/视频读取_写入

    摄像头/视频读取_写入 ➢VideoCapture类: 使用 OpenCV 播放视频,几乎与使用它来显示图像一样容易.播放视频时只需要处理的新问题就是如何循环地顺序读取视频中的每一顿,以及如何从枯燥的 ...

  5. python网页表格读取_是否可以读取网页html表格数据?

    我目前正在考虑一些自动读取网页数据.因此,有没有可能从网页中读取以下类型的表格:excel应该有一个值name of condion,Operator and Expressions.在 编辑> ...

  6. python中文件读取_如何从Python中的文件读取字节

    类似于 this问题,我试图读取ID3v2标记头并且无法弄清楚如何在python中获取单个字节. 我首先将所有十个字节读入一个字符串.然后我想解析各个信息. 我可以在字符串中获取两个版本号字符,但后来 ...

  7. matlab读取txt到矩阵,如何在MATLAB中将文本文件中的数据读入矩阵(How to read data from a text file into a matrix in MATLAB)...

    如何在MATLAB中将文本文件中的数据读入矩阵(How to read data from a text file into a matrix in MATLAB) 我在将.txt文件读入单个矩阵时遇 ...

  8. python 没有了matlab的fscanf功能,我该怎么办

    2019独角兽企业重金招聘Python工程师标准>>> Zhong's blog The data file .... # unknow linestag 134 345 256 2 ...

  9. 需求分析与建模最佳实践_社交媒体和主题建模:如何在实践中分析帖子

    需求分析与建模最佳实践 主题建模的实际使用 (Practical use of topic modeling) There is a substantial amount of data genera ...

最新文章

  1. Qt开发环境的下载地址
  2. golang range 遍历读写数据问题
  3. sql 2005 解除用户锁定(SA帐户被锁定)
  4. C语言再学习 -- NUL和NULL的区别
  5. PTA-1022——Digital Library
  6. SpingMVC ModelAndView, Model,Control以及参数传递
  7. 推荐几个自己经常去的一些博客和网站
  8. 不可压库艾特流的数值解计算机语言,不可压库埃特流的数值解学生洪安仕专业.ppt...
  9. 无浮动IP的虚机出公网流量路径
  10. 深度学习实践与部署(开篇)
  11. java下载配置步骤_Java环境构建-JDK下载,安装和配置步骤
  12. IntelliJ IDEA 2019.3 发布,性能和质量居然牛的飞天了!
  13. AnyForWeb告诉你什么才是“最好的”编程语言
  14. 安装Apache配置虚拟目录
  15. 河北省人民检察院利用深信服桌面云办公,实现智慧检务
  16. 飞行计算机配置,微软飞行模拟器配置要求一览 最低/最高PC配置详情
  17. 京东多个物流信息怎么批量查询,并分析派件时效
  18. Paranoid String
  19. 15_微信小程序之svg地图自定义组件编写
  20. 教你如何查看自己电脑开关机记录

热门文章

  1. 获奖名单出炉,快来看看有没有你!
  2. 阿里技术专家告诉你,如何画出优秀的架构图?
  3. 抽象思想解读Linux进程描述符
  4. 一个数据科学家需要哪些核心工具包?
  5. 我是如何用6个月,从0编程经验变成数据科学家的?
  6. python if break_python_if_else,while,break
  7. 测试linux内核镜像,测试Petalinux BSP镜像参考例子
  8. 使用xfire webservice接口开发,obj与xml相互转换好用工具类,不需要写大量的转换代码,亲测可用
  9. 开发经验分享_03_解决问题3步走(思路)
  10. org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 110; schema_reference.4: 无法读取方案文档