fortran课件 第8章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • UNIT=number FMT=format NML=namelist REC=record 模块位置 指定输入输出的位置 指定输入输出格式 指定读写某个namelist的内容 在直接读写文件中,设置所要读写的文件
§8-4-2 WRITE, READ的使用
• IOSTAT=stat 会设置一个整数给变量stat,用来 说明读写的状态 Stat>0 表示读取操作发生错误 Stat=0 表示读取操作正常 Stat<0 表示到达文件终了 • ERR=errlabel 指定在读写过程中发生错误时, 会转移到errlabel指定的行代码的语句继续执行程 序 • END=endlabel 读到文件结尾时, 要转移到 endlabel指定的行代码的语句继续执行
第八章 文 件
文件
§8-1 文件读取的概念
• 文件的功能:长期保存数据;可以被读取或修改 • 文件中数据保存的方式: 字符(文本文件) 二进制数代码
字符(文本文件): 使用文本编辑器来阅读,例12345,可读 二进制数代码: 整数12345,保存格式和数据在内存中的 保存方法相同,无法阅读,要用特殊的工具程序。 好处:1) 读取速度快,无需转换 2)节省内存 长整型1234567890,文本10个字符,二进制4个字节
read(fileid, fmt="(F4.2)", rec=player, iostat=error) hit • rec=记录号,记录号为正整数,必不可少指定存取的位置,文件的第 一个记录的记录号为1。文本文件的Fmt的格式必须规定,而顺序读取 不一定需要。
直接访问文件的操作规则:
• 直接访问文件中每个记录的长度必须相等。如果实际输 出的纪录所需长度不等,则应取最大的记录长度作为每 个记录的长度。记录长度应由相应的format语句格式规 定的输出所占域宽来决定。 如果是一个老文件,在open语句中说明的记录长度必须 与实际长度一致。特别要注意尾随的空格符,一个空格 符占一个字节。 用直接方式建立的文件可以采用顺序方式打开来读。用 顺序方式建立的文件,只要记录长度相等也可以用直接 方式打开来读。
PAD=’YES’ 在格式化输入时,最前面的不足字段会自动以空格填满,为 默认值 PAD=’NO’ 在格式化输入时,不足的字段不会自动以空格填满
Fortran 90添加的功能
• DELIM=’APOSTROPHE’ OR ’QUOTE’ OR ’NONE’ DELTM=’NONE’ 纯粹输出字符串 DELIM=’QUOTE’ 输出字符串在前后加双引号 DELIM=’APOSTROPHE’ 输出字符串在前后加单引号
STATUS= ‘REPLACE’ 文件若已经存在,会重建,若不存在则创建新文件 STATUS=‘SCRATCH’ 表示要打开一个暂存盘,不需要指定文件名,file一项 可忽略。 STATUS= ‘UNKNOWN’ 由编译器自定义,一般是REPLACE的效果。为默认 值
• ACCESS=’SEQUENTIAL’ OR ’DIRECT, ‘sequential’为默 认值
§8-4-1 OPEN的使用
Fortran 90添加的功能
• POSITION=’ASIS’ OR ’REWIND’ OR ’APPEND’, 设置文 件打开的读写位置 , if sequential I/O
=’ASIS’ 不特别指定,通常为文件开头,为默认值
• ACTION=’READ’ OR ’WRITE’ OR ’READWRITE’, 设置文件打开的读写权限 • PAD=’YES’ OR ’NO’, 输出时忽略
That’s right! (DELIM=’NONE’) “That’s right!” (DELIM=’QUOTE’) ‘That’’s right!’ (DELIM=’APOSTROPHE’)
§8-4-2 WRITE, READ的使用
• WRITE和READ命令的格式相近:
WRITE/READ(UNIT=number, FMT=format, NML=namlist, REC=record, IOSTAT=stat, ERR=errlabel, END=endlabel, ADVANCE=advance, SIZE=size)
例:如何写入从文件中读出数据,并略过一些没有必要的数据 读取数据(成绩)
中文每个字占两个字节
write(*,"(I2'号 中文:'I3' 英文:'I3' 数学:'I3)") no,s
例:读取版面格式较自由的文件中的数据,找出得分高 于20的人
寻找某 个字段
……
数据 类型 相合
原文件中加 小数点
§8-4-4 其他文件运行命令
• BACKSPACE(UNIT=number, ERR=errlabel, IOSTAT=ios) 把文件的 读写位置退回一个记录(顺序文件是一行,并且最后的结束有一个记录)
Fortran 90添加的功能 :
• POSITION=position, ACTION=action, DELIM=delim, PAD=pad 查看文件打开时在相应栏所设的字符串的值, 或是 ‘UNDEFINED’ • READ=read, WRITE=write, READWRITE=readwrite 查 看文件的读写属性,返回字符串: ‘YES’ / ‘NO’/’UNKNOWN’
• • • • OPEN=opened,逻辑变量 NUMBER=number 由文件名查打开时给定的代码 NAME=named ,逻辑值。检查文件是否取名,即是否为临时保存盘。 ACCESS=access 检查文件读取的格式,返回字符串,值 为:’SEQUENTIAL’或’DIRECT’或’UNDEFINED’ • SEQUENTIAL=sequential 查看文件是否为顺序格式,会返回一个字 符串,字符串的值为:‘YES’ 或‘NO’或’UNKNOWN’
文本文件,默认 值为unformatted
文本文件:每一行结尾 有两个看不见的字符表 示文本的结束;UNIX 系统结束符1个
open(unit=fileid, file=filename, access="direct", & form="formatted", recl=6, status="old")
对顺序文件的操作的基本原则:
• 一个WRITE总是开始一个新的记录,当前 WRITE语句所属出的记录总是作为文件的最后 一个记录。因此一个顺序文件不可能做到重写 前半部分,而保留后半部分。
例,读取字符串
Status=0 读取正常 Status>0 发生错误 Status<0 读到文件 终点
例:如何将学生的座号及成绩写入文件中
• 顺序文件(sequential):在读写时,不能任意到 文件的某个位置读写数据, 只能从头开始一个个 记录地向下进行。改变文件位置时,只能逐个记 录地后退(backspace),或是直接回到文件的开 头(rewind)
对顺序文件的操作的基本原则:
• • • 当用read语句读取数据时,为了正确输入,read语句中 各项输入项在类型上、采用格式上必须与文件中的数据 项按位置一一对应 Open和rewind语句之后总是在文件的开头。每执行一次 read语句,总是从一个新开始的记录去读入 当用read语句去读文件记录时,如果read语句中的输入 项少于文件中的数据项,则记录中的剩余项就会被忽略, 下一个read语句会从新的纪录开始读入,如果read语句 中的输入多于纪录中的数据项,则会接着去读下一个记 录(不包括单个字符串),直到所有输入项都得到数据, 或遇到文件结尾。
• SIZE=count 当ADVANCE=’NO’时才使用。它会把这一次输出入的字 符数目设置给整型变量count
§8-4-3 查询文件的状态INQUIRE
INQUIRE( UNIT=number, FILE=filename, IOSTAT=ios, ERR=label, EXIST=exist, OPEN=opened, NUMBER=number, NAMED=named, ACCESS=acess, SEQUENTIAL=sequential, DIRECT=direct, FORM=form, FORMATTED=formatted, UNFORMATTED=unformatted, RECL=recl)
Fortran 90 添加功能
• ADVANCE=’YES’和’NO’
设置在文本格式下的顺序文件中,每一次的READ和WRITE命令完成 后,读写位置会不会自动向下移动一行。 ADVANCE=’YES’ 是默认值,每读写一次会向下移动一行 ADVANCE=’NO’ 会暂停自动换行的操作 使用这个字段时,一定要设置输出输入格式。在屏幕输出时可以使用 这个设置来控制write命令是否会自动换行
§ 8-3 直接访问文件的操作
• 直接访问文件:可以到文件的任意位置来读写 • 实现方法:把文件的空间、内容实现分区成好几 个同样大小的小模块,这样的模块按顺序编号。 读写文件时,要先赋值文件读写位置在第几个模 块,再来进行读写的操作。直接读写的文件可以 到文件的任何一个地方来读写。
例:有文件保存了棒球击球记录, 查询球员 的击球率
§8-4-1 OPEN的使用
• RECL=LENGTH, 顺序文件中,LENGTH规定了一次可读写数据的最大容量 直接文件中,LENGTH为每个模块单元的分区大小 • ERR=LABEL, 当文件打开发生错误时,调到 LABEL所指 的行代码处来继续执行程序 • IOSTAT=var var为整型变量:var>0 读取操作发生错误; var=0 读取操 作正常;var<0 表示文件终了。 • BLANK=’NULL’or ‘ZERO’, 用来设置文字输入时,空格存 在时代表的意义。‘NULL’表示没东西,’ZERO’表示0
• UNIT=NUMBER, NUMBER是一个正整数,也可以使用赋过值的变 量或常量。NUMBER不能是6,6保留为默认的输出位置,即屏幕。 • FILE=’FILENAME’, 字符串为要打开的文件名
§8-4-1 百度文库PEN的使用
• FORM=’FORMATTED’OR’UNFORMATTED’ 即为文本文件或二进制文件。 • STATUS=’NEW’ OR ‘OLD’ OR ‘REPLACE’ OR ’SCRATCH’ OR ’UNKNOWN’
§8-1 文件读取的概念
• 读取文件的方式: 1) 顺序读取( sequential)
2) 直接读取(direct) ,
顺序读取:只能从文件开头一步步往下读取数据。 略过数据,或重新读取时, 要先“快转”或是“倒带” 直接读取:读写文件时,可以任意到文件的的任何一个位置来读写。
§8-2 顺序文件的操作
• 直接读取文件form的默认值是“unformatted”(二进制), 与 顺序读取文件相反。 • recl=6 对于直接读取得文本文件不能省略
• Recl=length, 整数lenth为直接存取文件中的每个记录模块的长 度。记录长度以字节为单位。直接存取文件中每个记录的长度 相等。 在McroSoft操作系统中,文本文件每一行的行尾有两个看不见 的符号来表示文本的结束。Unix系统每一行的行尾只有一个结 束符号
• •
例,list.txt用顺序文件读取
例: 对直接访问文件进行数据写入或改写
建立新的,或者 以新替旧,如果 是‘old’, 原内 容会消失
Go back ?
§ 8-4 文件操作语句
§ 8-4-1 OPEN的使用
OPEN中有许多参数,详细内容如下: OPEN(UNIT=NUMBER, FILE=’FILENAME’, FORM=’…’, STATUS=’…’, ACCESS=’…’, RECL=LENGTH, ERR=LABEL, IOSTAT=ios, BLANK=’…’, POSITION=’…’, ACTION=action, PAD=’…’, DELIM=’…’)
§8-4-2 WRITE, READ的使用
• IOSTAT=stat 会设置一个整数给变量stat,用来 说明读写的状态 Stat>0 表示读取操作发生错误 Stat=0 表示读取操作正常 Stat<0 表示到达文件终了 • ERR=errlabel 指定在读写过程中发生错误时, 会转移到errlabel指定的行代码的语句继续执行程 序 • END=endlabel 读到文件结尾时, 要转移到 endlabel指定的行代码的语句继续执行
第八章 文 件
文件
§8-1 文件读取的概念
• 文件的功能:长期保存数据;可以被读取或修改 • 文件中数据保存的方式: 字符(文本文件) 二进制数代码
字符(文本文件): 使用文本编辑器来阅读,例12345,可读 二进制数代码: 整数12345,保存格式和数据在内存中的 保存方法相同,无法阅读,要用特殊的工具程序。 好处:1) 读取速度快,无需转换 2)节省内存 长整型1234567890,文本10个字符,二进制4个字节
read(fileid, fmt="(F4.2)", rec=player, iostat=error) hit • rec=记录号,记录号为正整数,必不可少指定存取的位置,文件的第 一个记录的记录号为1。文本文件的Fmt的格式必须规定,而顺序读取 不一定需要。
直接访问文件的操作规则:
• 直接访问文件中每个记录的长度必须相等。如果实际输 出的纪录所需长度不等,则应取最大的记录长度作为每 个记录的长度。记录长度应由相应的format语句格式规 定的输出所占域宽来决定。 如果是一个老文件,在open语句中说明的记录长度必须 与实际长度一致。特别要注意尾随的空格符,一个空格 符占一个字节。 用直接方式建立的文件可以采用顺序方式打开来读。用 顺序方式建立的文件,只要记录长度相等也可以用直接 方式打开来读。
PAD=’YES’ 在格式化输入时,最前面的不足字段会自动以空格填满,为 默认值 PAD=’NO’ 在格式化输入时,不足的字段不会自动以空格填满
Fortran 90添加的功能
• DELIM=’APOSTROPHE’ OR ’QUOTE’ OR ’NONE’ DELTM=’NONE’ 纯粹输出字符串 DELIM=’QUOTE’ 输出字符串在前后加双引号 DELIM=’APOSTROPHE’ 输出字符串在前后加单引号
STATUS= ‘REPLACE’ 文件若已经存在,会重建,若不存在则创建新文件 STATUS=‘SCRATCH’ 表示要打开一个暂存盘,不需要指定文件名,file一项 可忽略。 STATUS= ‘UNKNOWN’ 由编译器自定义,一般是REPLACE的效果。为默认 值
• ACCESS=’SEQUENTIAL’ OR ’DIRECT, ‘sequential’为默 认值
§8-4-1 OPEN的使用
Fortran 90添加的功能
• POSITION=’ASIS’ OR ’REWIND’ OR ’APPEND’, 设置文 件打开的读写位置 , if sequential I/O
=’ASIS’ 不特别指定,通常为文件开头,为默认值
• ACTION=’READ’ OR ’WRITE’ OR ’READWRITE’, 设置文件打开的读写权限 • PAD=’YES’ OR ’NO’, 输出时忽略
That’s right! (DELIM=’NONE’) “That’s right!” (DELIM=’QUOTE’) ‘That’’s right!’ (DELIM=’APOSTROPHE’)
§8-4-2 WRITE, READ的使用
• WRITE和READ命令的格式相近:
WRITE/READ(UNIT=number, FMT=format, NML=namlist, REC=record, IOSTAT=stat, ERR=errlabel, END=endlabel, ADVANCE=advance, SIZE=size)
例:如何写入从文件中读出数据,并略过一些没有必要的数据 读取数据(成绩)
中文每个字占两个字节
write(*,"(I2'号 中文:'I3' 英文:'I3' 数学:'I3)") no,s
例:读取版面格式较自由的文件中的数据,找出得分高 于20的人
寻找某 个字段
……
数据 类型 相合
原文件中加 小数点
§8-4-4 其他文件运行命令
• BACKSPACE(UNIT=number, ERR=errlabel, IOSTAT=ios) 把文件的 读写位置退回一个记录(顺序文件是一行,并且最后的结束有一个记录)
Fortran 90添加的功能 :
• POSITION=position, ACTION=action, DELIM=delim, PAD=pad 查看文件打开时在相应栏所设的字符串的值, 或是 ‘UNDEFINED’ • READ=read, WRITE=write, READWRITE=readwrite 查 看文件的读写属性,返回字符串: ‘YES’ / ‘NO’/’UNKNOWN’
• • • • OPEN=opened,逻辑变量 NUMBER=number 由文件名查打开时给定的代码 NAME=named ,逻辑值。检查文件是否取名,即是否为临时保存盘。 ACCESS=access 检查文件读取的格式,返回字符串,值 为:’SEQUENTIAL’或’DIRECT’或’UNDEFINED’ • SEQUENTIAL=sequential 查看文件是否为顺序格式,会返回一个字 符串,字符串的值为:‘YES’ 或‘NO’或’UNKNOWN’
文本文件,默认 值为unformatted
文本文件:每一行结尾 有两个看不见的字符表 示文本的结束;UNIX 系统结束符1个
open(unit=fileid, file=filename, access="direct", & form="formatted", recl=6, status="old")
对顺序文件的操作的基本原则:
• 一个WRITE总是开始一个新的记录,当前 WRITE语句所属出的记录总是作为文件的最后 一个记录。因此一个顺序文件不可能做到重写 前半部分,而保留后半部分。
例,读取字符串
Status=0 读取正常 Status>0 发生错误 Status<0 读到文件 终点
例:如何将学生的座号及成绩写入文件中
• 顺序文件(sequential):在读写时,不能任意到 文件的某个位置读写数据, 只能从头开始一个个 记录地向下进行。改变文件位置时,只能逐个记 录地后退(backspace),或是直接回到文件的开 头(rewind)
对顺序文件的操作的基本原则:
• • • 当用read语句读取数据时,为了正确输入,read语句中 各项输入项在类型上、采用格式上必须与文件中的数据 项按位置一一对应 Open和rewind语句之后总是在文件的开头。每执行一次 read语句,总是从一个新开始的记录去读入 当用read语句去读文件记录时,如果read语句中的输入 项少于文件中的数据项,则记录中的剩余项就会被忽略, 下一个read语句会从新的纪录开始读入,如果read语句 中的输入多于纪录中的数据项,则会接着去读下一个记 录(不包括单个字符串),直到所有输入项都得到数据, 或遇到文件结尾。
• SIZE=count 当ADVANCE=’NO’时才使用。它会把这一次输出入的字 符数目设置给整型变量count
§8-4-3 查询文件的状态INQUIRE
INQUIRE( UNIT=number, FILE=filename, IOSTAT=ios, ERR=label, EXIST=exist, OPEN=opened, NUMBER=number, NAMED=named, ACCESS=acess, SEQUENTIAL=sequential, DIRECT=direct, FORM=form, FORMATTED=formatted, UNFORMATTED=unformatted, RECL=recl)
Fortran 90 添加功能
• ADVANCE=’YES’和’NO’
设置在文本格式下的顺序文件中,每一次的READ和WRITE命令完成 后,读写位置会不会自动向下移动一行。 ADVANCE=’YES’ 是默认值,每读写一次会向下移动一行 ADVANCE=’NO’ 会暂停自动换行的操作 使用这个字段时,一定要设置输出输入格式。在屏幕输出时可以使用 这个设置来控制write命令是否会自动换行
§ 8-3 直接访问文件的操作
• 直接访问文件:可以到文件的任意位置来读写 • 实现方法:把文件的空间、内容实现分区成好几 个同样大小的小模块,这样的模块按顺序编号。 读写文件时,要先赋值文件读写位置在第几个模 块,再来进行读写的操作。直接读写的文件可以 到文件的任何一个地方来读写。
例:有文件保存了棒球击球记录, 查询球员 的击球率
§8-4-1 OPEN的使用
• RECL=LENGTH, 顺序文件中,LENGTH规定了一次可读写数据的最大容量 直接文件中,LENGTH为每个模块单元的分区大小 • ERR=LABEL, 当文件打开发生错误时,调到 LABEL所指 的行代码处来继续执行程序 • IOSTAT=var var为整型变量:var>0 读取操作发生错误; var=0 读取操 作正常;var<0 表示文件终了。 • BLANK=’NULL’or ‘ZERO’, 用来设置文字输入时,空格存 在时代表的意义。‘NULL’表示没东西,’ZERO’表示0
• UNIT=NUMBER, NUMBER是一个正整数,也可以使用赋过值的变 量或常量。NUMBER不能是6,6保留为默认的输出位置,即屏幕。 • FILE=’FILENAME’, 字符串为要打开的文件名
§8-4-1 百度文库PEN的使用
• FORM=’FORMATTED’OR’UNFORMATTED’ 即为文本文件或二进制文件。 • STATUS=’NEW’ OR ‘OLD’ OR ‘REPLACE’ OR ’SCRATCH’ OR ’UNKNOWN’
§8-1 文件读取的概念
• 读取文件的方式: 1) 顺序读取( sequential)
2) 直接读取(direct) ,
顺序读取:只能从文件开头一步步往下读取数据。 略过数据,或重新读取时, 要先“快转”或是“倒带” 直接读取:读写文件时,可以任意到文件的的任何一个位置来读写。
§8-2 顺序文件的操作
• 直接读取文件form的默认值是“unformatted”(二进制), 与 顺序读取文件相反。 • recl=6 对于直接读取得文本文件不能省略
• Recl=length, 整数lenth为直接存取文件中的每个记录模块的长 度。记录长度以字节为单位。直接存取文件中每个记录的长度 相等。 在McroSoft操作系统中,文本文件每一行的行尾有两个看不见 的符号来表示文本的结束。Unix系统每一行的行尾只有一个结 束符号
• •
例,list.txt用顺序文件读取
例: 对直接访问文件进行数据写入或改写
建立新的,或者 以新替旧,如果 是‘old’, 原内 容会消失
Go back ?
§ 8-4 文件操作语句
§ 8-4-1 OPEN的使用
OPEN中有许多参数,详细内容如下: OPEN(UNIT=NUMBER, FILE=’FILENAME’, FORM=’…’, STATUS=’…’, ACCESS=’…’, RECL=LENGTH, ERR=LABEL, IOSTAT=ios, BLANK=’…’, POSITION=’…’, ACTION=action, PAD=’…’, DELIM=’…’)