二进制文件Fortran读写专题
- 格式:pdf
- 大小:1.58 MB
- 文档页数:18
先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。
二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。
下面我们看看一个拷贝程序的源码:2中,注意fread的返回值,这个值需要在fwrite的时候将会用到。
后面是关于fopen,fread,fwrite三个函数的详细说明。
fopen(打开文件)相关函数open,fclose表头文件#include<stdio.h>定义函数FILE * fopen(const char * path,const char * mode);函数说明参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。
若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。
若文件不存在则建立该文件。
a 以附加的方式打开只写文件。
若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。
若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
不过在POSIX系统,包含Linux都会忽略该字符。
由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
返回值文件顺利打开后,指向该流的文件指针就会被返回。
让FORTRAN也能随机读写二进制文件任意字节数
王成良
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】1996(000)006
【摘要】本文提出了一种解决任何一种FORTRAN77语言随机读写二进制文件任意字节数的方法,并给出了该方法的源程序及调用实例。
【总页数】3页(P17-19)
【作者】王成良
【作者单位】无
【正文语种】中文
【中图分类】TP312FO
【相关文献】
1.高压气体淬火过程数值模拟软件中Fortran数据文件的处理--有限元和有限体积法软件二次开发中对Fortran二进制文件的处理 [J], 黄鹏;魏兴钊
2.利用VB随机文件处理中文记录与中文二进制文件的读取研究 [J], 王德超
3.任意随机序列关于二重非齐次马氏链的随机和的一类随机选择系统的随机逼近定理 [J], 王康康;李芳;杨卫国
4.FORTRAN语言上的任意精度运算 [J], 徐国良;李家楷
5.利用VB随机文件处理中文记录与中文二进制文件的读取研究 [J], 王德超
因版权原因,仅展示原文概要,查看原文内容请购买。
【Fortran】Fortran中Open,Read和Write的⽤法1:write(*,*)"string";write(unit=*,FMT=*)"string";write(unit=6,FMT=*)"string"。
以上等价,6是默认输出位置,即屏幕。
2:print*,"string"。
Print只能对屏幕输出。
3:integer(kind=4) a !f90;integer*4 a !f77;integer(4) a !f77。
以上等价。
real(kind=4) a !f90;real*4 a !f77;real(4) a !f77。
以上等价。
4:f77,变量名长度1~6;f90,变量名长度1~31。
5:read(*,*)"string";write(unit=*,FMT=*)"string";write(unit=5,FMT=*)"string"。
以上等价,5是默认输⼊位置,即键盘。
6:FORMAT6.1 格式输出格式输出语句由两部分组成:输出语句和输出格式语句。
输出语句的⼀般形式为:WRITE(*,L) 输出表列或: PRINT L 输出表列其中:* 代表隐含的输出设备,L 指输出格式语句的标号。
输出格式语句的⼀般形式:L FORMAT(1X,S)其中:L 输出格式语句的标号,1X 纵向⾛纸符,S 输出格式,⽤不同的“格式编辑符”(简称“编辑符”)来实现指定的输出格式,各格式间⽤逗号相隔。
FORMAT语句⼜叫“格式语句”,是⼀个⾮执⾏语句,本⾝不产⽣任何操作,只是提供输⼊或输出的格式。
FORMAT语句可以出现在程序的任何地⽅(但必须在PROGRAM语句之后和END语句之前,如果在⼦程序中⽤FORMAT语句,则应在⼦程序定义语句之后)。
系统按WRITE语句或PRINT语句中指定的语句标号找到相应的FORMAT语句,并按FORMAT语句所规定的格式对数据进⾏输出。
二进制文件读写分析有关TXT文件以及bin文件处理的测试代码int main(){//fstreamfile("D:\\test.dat",ios_base::in|ios_base::out|ios_base::app);fstream file;file.open("D:\\test1.dat",ios_base::out);{int temp[10] ={0x11,0x13,0x14,0x1F,0x1D,0x11,0x11,0x12,0x11,0x11};int temp1[10];file.write((char *)temp,sizeof(temp));file.close();file.open("D:\\test1.dat",ios_base::in);file.read((char *)temp,sizeof(temp));unsigned int i;cout<<sizeof(temp)<<endl;for(i = 0;i < sizeof(temp)/sizeof(unsigned int);i++){temp1[i] = temp[i];cout<<temp[i]<<endl;}file.close();file.open("D:\\test1.dat",ios_base::out);temp1[6] = 0x16;file.write((char *)temp1,sizeof(temp));file.close();}file.open("D:\\test1.dat",ios_base::out|ios_base::app);unsigned char temp[10] = {'a','b','a','a','a','d','a','C','a','a'}; test *test1 = (test *)malloc(sizeof(test));test1->projectId = 'U';test1->password = 0x12;for(int i = 0;i < 10;i ++){test1->someThings[i] = temp[i];}test1->sm = (unsigned long)0x41;test1->fuck = 'M';file.write((char *)test1,sizeof(test));file.close();test *test2 = (test *)malloc(sizeof(test));file.open("D:\\test1.dat",ios_base::in);file.seekg(0x28);file.read((char *)test2,sizeof(test));for(int i = 0;i < 10;i ++){cout<<test2->someThings[i]<<endl;}file.close();return 0;}有关bin文件处理的测试笔记<1> 我一直以为自己很熟悉如何使用C/C++中的二进制文件,可今天测试的时候突然发现程序生成的二进制文件和文本文件一样。
二进制读写文件在计算机中,所有的数据最终都以二进制形式存储,包括文本、图像、音频和视频等。
二进制文件的读写是计算机操作系统和应用程序中的常见操作之一,它涉及将数据从磁盘或其他存储介质加载到内存中,以便计算机可以对其进行处理。
二进制文件的读取通常包括以下几个步骤:打开文件、读取文件内容、关闭文件。
在打开文件时,计算机会根据文件路径找到文件的存储位置,并分配内存来存储文件的内容。
然后,计算机将按照一定的格式,读取文件中的二进制数据,并将其转换为计算机可以理解的数据类型,如字符、整数或浮点数等。
最后,计算机会关闭文件,释放内存。
类似地,二进制文件的写入也是一个相似的过程。
首先,计算机会创建一个新文件或打开一个已存在的文件,并分配内存用于存储数据。
然后,计算机将数据转换为二进制形式,并将其写入文件中。
最后,计算机会关闭文件,确保数据被正确地保存。
二进制文件的读写在计算机科学中具有重要的意义。
它可以用于存储和传输各种类型的数据,如文本文件、图像文件、音频文件和视频文件等。
通过使用二进制文件,计算机可以高效地处理大量的数据,并保持数据的完整性和准确性。
对于程序员来说,了解如何读写二进制文件是必不可少的技能之一。
在编写应用程序时,程序员经常需要读取和处理二进制文件,如配置文件、日志文件和数据库文件等。
通过对二进制文件的读写操作,程序员可以实现数据的持久化存储和交换,从而使程序更加灵活和可扩展。
二进制文件的读写还可以用于数据的备份和恢复。
通过将数据存储为二进制文件,可以有效地保存和恢复重要的数据,以防止数据丢失或损坏。
这在计算机系统的维护和管理中具有重要的作用。
二进制文件的读写是计算机科学中的重要概念和技能。
通过了解和掌握二进制文件的读写过程,我们可以更好地理解计算机系统的工作原理,并能够更有效地处理和管理数据。
无论是在编程还是在日常使用计算机时,对二进制文件的读写都是必不可少的技能。
希望本文能够帮助读者更好地理解和应用二进制文件的读写。
6 Fortran 程序设计6-文件1. 文件及其作用在Fortran程序设计中,文件是用于存储和读取数据的一种重要途径。
文件可以是文本文件或二进制文件,可以包含各种类型的数据,如数字、字符或其他格式的数据。
文件的作用主要有以下几个方面:1. 存储数据:文件可以将数据永久地保存在磁盘上,便于以后的使用。
2. 读取数据:文件可以从磁盘上读取数据,供程序使用。
3. 数据传输:文件可以用于将数据从一个程序传输到另一个程序。
2. 文件的创建和打开在Fortran中,可以使用open语句来创建和打开文件。
open语句的语法如下:fortranopen(unit=unit_number, , status=status, action=action, iostat=iostat)其中,unit_number表示文件的逻辑单元号,表示文件的名称,status表示文件的状态(可选参数,默认为'unknown'),action表示文件的操作(可选参数,默认为'read'),iostat表示打开文件的状态码(可选参数,默认为0)。
举个例子,要创建一个名为data.txt的文本文件,并将其打开,可以使用以下代码:fortranopen(unit=10, file='data.txt', status='unknown',action='read', iostat=iostat)3. 文件的读取和写入通过已经打开的文件,我们可以对其进行读取或写入操作。
Fortran中常用的文件读取和写入语句有:read语句:用于从文件中读取数据fortranread(unit=unit_number, format=format) variable1,variable2,其中,unit_number表示文件的逻辑单元号,format表示读取数据的格式,variable1、variable2等表示要读取到的变量。
⽂件操作(⼆进制读写)/***a.txt***/this is a wordhelloworld/***file.c***/#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){FILE *p = fopen("./a.txt","r");while(!feof(p)){char buf[100] = {0};fscanf(p,"%s",buf);printf("%s\n",buf);}fclose(p);return0;}fscanf()函数和scanf函数⽤法⼀样。
fscanf是从⼀个⽂件中读取字符串,scanf是从键盘读取字符串。
(遇到空格就停⽌)/***a.txt***/23 + 45 =35 + 63 =34 + 45 =/***file1.txt***/#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){int a,b;FILE *p = fopen("./a.txt","r");while(!feof(p)){char buf[100] = {0};//fgets(buf,"%s",p);//fscanf(p,"%s",buf);fscanf(p,"%d + %d = ",&a,&b);printf("a = %d , b = %d\n",a,b);//printf("%s\n",buf);}fclose(p);return0;}/***fprintf.c***/#include<stdio.h>#include<string.h>int main(){FILE *p = fopen("./b.txt","w");char buf[100] = "hello world";fprintf(p,"%s",buf);fclose(p);return0;}fread()函数和fwrite()函数:操作⽂本⽂件和⼆进制⽂件fopen()函数只能读⽂本⽂件/***fread.c***/#include<stdio.h>int main(){FILE *p = fopen("./a.txt","rb");char buf[100] = {0};fread(buf,sizeof(char),1,p); //第⼀个参数是缓冲区,第⼆个参数是读取字节⼤⼩,第三个 //参数表⽰读取字节个数,第四个参数表⽰⽂件指针 printf("buf = %s\n",buf);fclose(p);return0;}/***fread1.c***/#include<stdio.h>int main(){FILE *p = fopen("./a.txt","rb");while(!feof(p)){char buf[20] = {0};fread(buf,sizeof(char),sizeof(buf),p);printf("buf = %s\n",buf);}fclose(p);return0;}fread()函数有返回值,返回的是size_t类型,unsigned int ==》 %u/***fread.c***/#include<stdio.h>int main(){FILE *p = fopen("./c.txt","rb");char buf[1024] = {0};size_t res = fread(buf,sizeof(char),sizeof(buf),p);printf("res = %u\n",res);/*while(!feof(p)){char buf[20] = {0};fread(buf,sizeof(char),sizeof(buf),p);printf("buf = %s\n",buf);}*/fclose(p);return0;}/***c.txt***/asd运⾏结果:res = 4(⽂件结尾有⼀个换⾏字符‘\n’?);size_t res = fread(buf,sizeof(int),sizeof(buf),p);运⾏结果:res = 1;以上程序的运⾏结果和windos环境下读⽂本⽂件的结果会出现差异。
摘要:FORTRAN数据文件的结构及用C语言直接对FORTRAN数据文件进行数据读取和处理的方法,并结合实例,给出了完成操作的C语言源程序。
关键词:C语言FORTRAN数据文件数据直接读写FORTRAN语言适用于数值计算,在科学和工程计算方面发挥了重要作用。
C语言具有很强的通用程序设计功能,而且很适于处理图形图像、系统程序方面的问题,但它的数值计算能力不如FORTRAN语言。
如果能在C语言程序中直接调用FORTRAN程序的计算结果,则可充分利用这2种语言的优势。
为此,有必要建立用C语言对FORTRAN数据文件进行直接读取和处理的方法。
1 FORTRAN数据文件的结构在C语言程序中调用FORTRAN程序的计算结果,可通过FORTRAN数据文件来实现,而要用C语言直接存取FORTRAN数据文件,必须首先清楚FORTRAN数据文件的结构。
FORTRAN数据文件按存取方式的不同可分为顺序文件和直接文件。
而不论是顺序文件还是直接文件,按数据在文件中的存放方式的不同,都有2种存放形式,一种是字符形式(即ASCII码形式),另一种是二进制代码形式。
前者称为有格式存放,后者称为无格式存放。
由于对直接文件存取的基本操作步骤与对顺序文件存取的基本操作步骤相同,二者的不同主要体现在操作时是否应顺序进行。
下面以顺序文件为例进行具体分析。
1.1 有格式文件的结构有格式文件全部由有格式的记录组成,有格式的记录是字符的序列,以ASCII码形式存放。
各记录以回车符(0DH)和换行符(0AH)作为结束标志,各记录之间无分隔符,各记录的长度(字节数)可以不等。
1.2 无格式文件的结构无格式文件全部由无格式记录组成,无格式记录是值的序列,即二进制代码序列。
这种格式的文件,其第1个字节是4BH(即十进制的75),最后1个字节为82H(即十进制的130),各无格式记录的数据信息位于这2个字节之间。
每一个无格式记录都由下面3部分组成:(1)记录的首字节,是该记录所有数据所占的字节数;(2)组成该记录的各数据内容。