FORTRAN读取未格式化二进制文件

FORTRAN读取未格式化二进制文件
FORTRAN读取未格式化二进制文件

FORTRAN

·

2003 4

C/C++ FORTRAN FORTRAN …… FORTRAN “a” 4

open(60,file=filename,status=’unknow’,form=’unformatted’)

write(60) nx,ny,nz

do k=1,nz

do j=1,ny

write(60) (a(i,j,k),i=1,nx)

enddo

enddo

close(60)

(4*nx)*ny*nz+12 nz*ny*(4*nx+8)+20

FORTRAN “ ” 4 4 4 4

write(60) nx,ny,nz

nx,ny,nz 4 2

0 12 nx ny nz 0 12

20(2+2+4+4+4+2+2)

write(60) (a(i,j,k),i=1,nx)

nx 1024

0 4096 a(1,j,k) a(2,j,k) ……a(1024,j,k) 0 4096

4104(2+2+4+4+……+4+2+2) C/C++

open(60,file=filename,status=’unknow’,form=’unformatted’)

write(60) nx,ny,nz

do k=1,nz

do j=1,ny

do i=1,nx

write(60)a(i,j,k)

enddo

enddo

enddo

close(60)

a

4 12 nx*ny*nz*12+20

FORTRAN FORTRAN “ ”

#define SWAP_2(x) ( (((x) & 0xff) << 8) | ((unsigned short) (x) >> 8) )

#define SWAP_4(x) ( ((x) << 24 | (((x) << 8) & 0x00ff0000 | (((x) >> 8) & 0x0000ff00) | ((x) >> 24) )

#define FIX_SHORT(x) (*(unsigned short *)&(x) = SWAP_2(*(unsigned short * )&(x))) #define FIX_LONG(x) (*(unsigned *)&(x) = SWAP_4(*(unsigned *)&(x)))

#define FIX_FLOAT(x) FIX_LONG(x)

4

/

ASCII

2008 1 64 2 4 2 FORTRAN access=’stream’

关于二进制文件读写的详细解说

先介绍函数,我们一共要用到三个函数,fopen,fread,fwrite。二进制读写的顺序是用fopen以二进制方式打开读写文件,然后使用fread和fwrite两个函数将数据写入二进制文件中。下面我们看看一个拷贝程序的源码:

2中,注意fread的返回值,这个值需要在fwrite的时候将会用到。 后面是关于fopen,fread,fwrite三个函数的详细说明。 fopen(打开文件) 相关函数open,fclose 表头文件#include 定义函数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_I WGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考um ask值。 返回值文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。 附加说明一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误 判断及处理。 范例#include main() { FILE * fp; fp=fopen("noexist","a+"); if(fp= =NULL) return; fclose(fp); } fread(从文件流读取数据) 相关函数fopen,fwrite,fseek,fscanf 表头文件#include 定义函数size_t fread(void * ptr,size_t size,size_t nmemb,FILE * strea m); 函数说明fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参 数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目, 如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错 误发生,这时必须用feof()或ferror()来决定发生什么情况。 返回值返回实际读取到的nmemb数目。 附加说明 范例#include #define nmemb 3 struct test { char name[20]; int size; }s[nmemb]; main() { FILE * stream; int i;

fortran文件读取技巧

最近专业课海洋要素计算作业需要用fortran编程读取验潮站资料(如下,是txt,其中数据是有62行,限于篇幅,我只截取了前5行数据外加验潮站的4行头信息) !要注意的是最后一列数据后面没有空格 program ex1 !********************************************** !* written by 潘海东, 2015,3,20 !*一次性读取744个数据,放入一维数组中 !*(如果一次性读取太多的话可能会对系统造成某些影响) !********************************************** INTEGER :: b(62*12),i character(len=20) time,location,u1,u2 open(10, file = 'C:\Users\Administrator\Desktop\sjs_t_97aug_m(harmonic).txt', status = 'old') !********读取头信息 read(10,"(A3)") u1 read(10,"(A18)") time read(10,"(A13)") location read(10,"(A2)") u2 !********读取数据 read(10,100) b(:) 100 format(61(11(I4,1x),I4,/),11(I4,1x),I4) !在fortran的输入输出中'/'代表换行 close(10) end program ex2 !********************************************** !* written by 潘海东, 2015,3,20 !*读取第3列至第11列 !********************************************** INTEGER :: a(62,9),i character(len=20) time,location,u1,u2 open(10, file = 'C:\Users\Administrator\Desktop\sjs_t_97aug_m(harmonic).txt', status = 'old') !***读取头信息

fortran心得

Read 的规则: 按行读取,每次读一行,读完后光标自动跳到下一行的开头,空格和逗号代表结束(所以空格和逗号也是读取的一部分的话,需要使用“输入输出格式”) 如果想要将一行数据读入数组,代码为: Read(10,*) s(:,:,:) 不用规定输入输出格式,因为会根据s(:,:,:)确定需要读入的数字的个数,然后fortran会按部就班的读取,甚至文件中当前这一行的数字个数不足以填满s(:,:,:)的时候,read会自动跳到下一行继续搜索数字,直到填满s(:,:,:)为止。 但是需要注意给数组赋值的顺序:read会把它搜索到的第一个数字给s(1,1,1),第二个给s(2,1,1),第三个给s(3,1,1)… 程序9 1: 将read(unit=field,fmt="(A79)",iostat=status)buffer 中的A79改为A2,结果只输出每行的前两个字符,说明read是按整行整行读取的。 中间空了几行之后,空行之后的内容还是能被读取和输出,这说明,空行和空白是不一样的:空行也算是一种文本内容,因此不会终止读取,而空白意味着结束。 !读取文件 program main implicit none character(len=79)::filename="number.txt",buffer integer,parameter::field=10 integer::status=0 logical alive inquire(file=filename,exist=alive) if(alive)then open(unit=field,file=filename) do while(.true.) read(unit=field,fmt="(A79)",iostat=status)buffer if(status/=0)exit write(*,"(A79)")buffer end do else write(*,*)filename,"does't exist." end if pause stop end program main ============================================= 附number.txt =============================== 1234555666

二进制文件的读写以及相关心得

二进制文件读写分析 有关TXT文件以及bin文件处理的测试代码 int main() { //fstream file("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<

Fortran进行批处理地方法

Fortran中批量处理文件的方法总结 —循环读取目录下的所有符合条件的文件===================== 一、简单的介绍 在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。 对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦! 这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。 我总结的批处理方法大概可以用下面这个示意图来说明: | | |将文件目录写入一个文本文件,供fortran循环读取 |————手动输入文件名 |————运行程序之前命令行工具导出文件名 |————程序运行后,未开始计算之前,生成文件名 | ————调用CMD命令生成 | ————GETFILEINFOQQ方法生成 | ————调用WIN32API生成 | |在程序运行时动态生成文件名 | | 对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。第二种方法主要是说明其思路。 二、方法的介绍 1、将文件目录写入一个文本文件,供fortran循环读取 1.1、手动输入文件名 这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。

解码labview读写二进制文件格式

解码labview读写二进制文件格式 一直觉得NI 很恶心,最近越发觉得恶心,竟知道骗钱,我花了2 周去探它该死的数据格式,问他们售后居然说不知道...还得我亲自动手...现在把数据格式写下来,为大家做点贡献吧...关于用matlab/vc 读二进制文件write to binary file 的数据NI 可以直接用这个函数把数据写下来,但是读取格式不告诉你,要你用它的软 件去读...读的方法:1) 用uchar 去读,将数据转置存储;2)用浮点去读,倒序;-------- 这些在网上可以查到,下面才是关键.... 对64 位数据:3)每个通道有21 个数据是头文件,即21*64bit 的头信息,可以不去管它,跳过; 4)除了头文件外,每个通道还有1-3 个字节的信息(不知道什么玩意儿),要跳过;具体来讲是这样,如果有6 个通道, 第一个通道存储了1 个字节,要扣除;第2,4,5 个通道多了2 个字节,要扣除;第3,6 通道多了3 个字节要扣除.但是必须从3 开始扣.即假如总共N 字节数据,则第一个通道读N-3 个,接下来2,4,5 要读N-4 个,剩下的3,6 要读N-5 个.只有这样才能正确的读取.不过要注意数据倒序的问题,实际的数据可能正好通道顺序相反.5) 剩下的就是编程的问题了,还有很多细节大家可以自己解决,再看怎么要内存最小,耗时最短...我是没有在NI 的说明文档里面找对相关的数据存储格式,这里是 6 个通道的举例,要是5 个通道又得慢慢试了...再来一句,NI 真恶心,其实没必要 保留数据格式...搞的人家都要用它的软件...tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

fortran新建,添加外部文件和简要读写格式说明

1.建立新的运行空间 File>new>workspace>new>prject>console application>new>file>free-form 2.建立多个文件 可以把子程序文件和主程序文件放在同一个source文件下 3.建立外部文件用于读写数据 Open(1,file=’ exam.txt ‘)用于打开文件,其中1为设备号——用一整数表示,exam.txt为要打开的文件名,文件有文件名和文件类型构成,文件名可给出路径如file=’ D:\exam\exam.txt ‘Write(1,*)’学生的成绩为:’用于在写在前面打开的1文件里写数据,其中*和0、5、6是系统预定义的设备号由系统隐含规定。一个文件名只能和一个设备号建立联系,同样一个设备号也只能与一个文件建立联系,一个通过OPEN语句打开并指定了设备号的文件不能再次用OPEN语句打开 Read(1,*)表示从文件里面读取数据,一次读取一个数据,数据间用逗号隔开 每隔一个read语句或write语句默认的换一行读入或写入 Write(1,”(‘输入’)”)=write(1,*) ‘输入’ Write(1,”(‘I3,’输出’,I7)”) x,y结果是x以3个整型字符输出,输出,y以7个整型输出 Read(1,100)或write(1,100)I,j,k 100 format(I3,I7,F6)表示按照100语句的格式读入或输出顺序读写数据: Read(uint设备号,fmt格式说明,end结束语句转移,eor错误语句转移) 输入数据可以按规定的域宽输入,也可以用逗号强制间隔, 1.使用read语句读取数据时,read语句输入表中的数据类型和格式应该与当前指针位置 数据类型和格式一致。 2.使用read语句读取数据时,从当前文件指针开始读取,完成读取后文件指针自动后移一 个记录,使用OPEN和REWIND语句时,文件指针指向第一个记录,从第一个记录开始读取。 3.使用read语句读取时,如果输入表要求输入的数据少于当前记录的数据个数,则多余的 数据将被忽略,下一个read语句从下一个新的记录开始读取数据。相反则继续读取下条数据记录直到读完全部输入数据。 4.使用write语句时,从当前文件指针开始存写,完成存写后文件指针自动后移一个记录, 使用OPEN和REWIND语句时,文件指针指向第一个记录,从第一个记录开始读取。如果文件已存在,则原文件的数据将丢失。 5.使用write语句写入数据时,从当前的位置开始写入,可使用format语句中的格式说明 及括号和反斜杠/创建多条新纪录写入,完成操作后,文件指针自动后移一个记录。6.使用了read以后,立即使用write语句,将导致写入的数据为最后一个记录,其余的数 据将丢失。如果在文件末尾要写入新的记录可以通过下了语句实现: 100 read(1,*,end=200) Goto 100 200 write(1,*)’’ 7.使用了write语句立即使用read语句会遇到一个文件结束标志。如果写入后要立即进行 读取,需要用OPEN、rewind、backspace等对文件重新定位。 文件打开操作: Open(unit=设备号,file=文件名,access=存取方式,form=存取格式,recl=记录长度,err=错误转移,pad=补加空格,position=读取位置) 如err=100,表示跳到100号语句 Position 为文件位置包括三个格式,ASIS,已存在文件的上一次操作位置为文件的位置,缺

项目四 Word 2003文档的格式设置

项目四 Word 2003文档的格式设置 ●任务一文档的基本格式设置 ●任务二使用模板 ●任务三页面、页眉与页脚、样式、目录 任务一文档的基本格式设置 在文档中输入文本后,用户可以根据需要对文本或段落设置格式,如设置文本的字符格式,为段落设置首字下沉,为文本或段落添加边框和底纹,为段落添加项目符号和编号,用制表位设置段落的对齐,以及为文档添加水印等。 本任务内容提要 一、设置字符和段落格式 二、设置文字下沉 三、设置边框和底纹 四、设置项目符号和编号 五、设置制表位与添加水印 六、插入艺术字 七、应用系统内置样式 一、设置字符和段落格式 字符格式包括字体、字号、字形和字符颜色等。段落是以回车符“ ”为结束标记的内 容,段落的格式设置主要包括段落的对齐方式、段落缩进、段落间距以及行间距等。 Word 2003默认的中文字符格式为宋体、五号字,英文字体为Times New Roman。 在实际工作中,我们可以根据需要利用“格式”工具栏,以及“字体”和“段落”对话框灵活设置文档的字符和段落格式。 选中文本后单击“格式”工具栏上的相应按钮即可 利用“格式”工具栏设置字体、字号和字体颜色时,可单击相应选项右侧的下三角按钮,然后从弹出的下拉列表中进行选择。字号的表示方法有两种:一种以“号”为单位,如初号、一号、二号……,数值越大,字号就越小;另一种以“磅”为单位,如10、10.5、15……数值越大,字号也越大。 利用“格式”工具栏设置段落的对齐方式时,只需单击相应的对齐方式按钮即可。这几个按钮的

作用从左到右分别是两端对齐、居中对齐、右对齐和分散对齐。 在该选项卡可设置文字效果 在此可设置字符效果

fortran文件操作

fortran文件操作 From: 《Fortran 95 程序设计》彭国伦 1.文件读取的概念: 读取:“顺序读取”和“直接读取”。 保存:“文本文件”和“二进制文件”。 二进制文件:读取快,因为保存格式和数据在内存中的保存方法一样,同时也节省空间。 ---------------------------------- 2. 文件的操作: ---------------------------------- open的使用:使用open命令打开文件之后,就可以对文件来做输入输出。 example: program ex0901 impicit none open(unit=10, file='hello.txt') ! 打开hello.txt文件, unit指定文件代码,file 指定文件名称。 write(10, *) "hello" !在代码为10的文件中写入hello stop end program ex0901 open中有很多参数可以使用,详细如下: OPEN(UNIT=number, FILE='filename', FORM='...', STATUS='...', ACCESS='...', RECL=length, ERR=label, IOSTAT=iostat, BLANK='...', POSITION='...', ACTION=action, PAD='...', DELIM='...') UNIT='number': number必须是一个正整数,它可以使用变量或是常量来赋值。number最好避开1,2,5,6。因为2,6是默认的输出位置,也就是屏幕。1,5则是默认的输入位置,键盘。 FILE='filename':指定要打开的文件名称,文件名要符合系统规定。windows下不区分大小写,unix下则会区分大小写,最好不要使用中文文件名。 FORM='FORMATTED' OR 'UNFORMATTED' FORM字段只有两个值可以设置: FORM='FORMATTED' “文本文件”格式来保存 FORM='UNFORMATTED' “二进制文件”格式保存 这一栏不给定时候的默认值是: FORM='FORMATTED' STATUS='NEW' or 'OLD' or 'SCRATCH' or 'UNKNOWN' 用来说明打开一个新的文件或已经存在的旧文件。 STATUS='NEW' 打开一个原本不存在的新文件 STATUS='OLD' 打开一个原来已经存在的文件 STATUS='REPLACE' 若文件已经存在则重新创建一次,原来的内容消失;若不存在则会创建新文件。 STATUS='SCRATCH' 表示要打开一个暂存文盘,这个时候可以不需要指定文件名称,也就是FILE这个一栏可以忽略。因为程序本身会自动取一个文件名,至于文件名是啥也不重要,因为暂存盘会在程序结束后自动删除。 STATUS='UNKNOWN' 由各编译器自定义。通常会同REPLACE的效果。 !这一栏不给定时,默认为STATUS='UNKNOWN'。 ACCESS='SEQUENTIAL' or 'DIRECT' 设置读写文件的方法:

二进制文件和文本文件的详细以及如何生成二进制文件

二进制文件和文本文件的详细以及如何生成二进制文件? 技术随笔2010-05-01 19:13:56 阅读226 评论0 字号:大中小订阅 这个问题一直困扰了很多年,可能是我没有认真的去思考。我相信很多人可能和我一样很纠葛,到底编译器也好,汇编器也好是如何工作的呢?到底怎么回事?为什么会运行呢?这是让我们这些看着windows 学习电脑的人真的很难去理解计算机的内部结构。其实,这一切都只是障眼法,下面我就来给大家细细说说我对计算机的理解。 解答1:编译器是怎么回事? 所谓编译器,顾名思义就是将一种文本格式转换成另一种文本格式。比如将字符串echo "hello"; 转换成printf("hello"); 这其实是php语言转成c语言的一种表示。这只是一种简单的描述,其实很大一部分的编译器是将源语言转换成了汇编语言。下面我们来看看 C 语言中的经典hello word,通过gcc编译后生成的汇编是怎么回事。 c语言源码: #include int main() { printf("hello world\n"); } 通过编译器后,编译器把这个翻译成了另一套字符串,其实就是汇编语言: .file "hello.c" .section .rodata .LC0: .string "hello world" .text .globl main .type main, @function main: leal 4(%esp), %ecx andl $-16,%esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp movl $.LC0, (%esp) call puts addl $4, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret .size main, .-main .ident "GCC: (GNU) 4.1.2"

FORTRAN新建,添加外部文件和简要读写格式说明

1.建立新的运行空间 File>new>workspace>new>prject>console application>new>file>free-form 2.建立多个文件 可以把子程序文件和主程序文件放在同一个source文件下 3.建立外部文件用于读写数据 Open(1,file=’ exam.txt ‘)用于打开文件,其中1为设备号——用一整数表示,exam.txt 为要打开的文件名,文件有文件名和文件类型构成,文件名可给出路径如file=’D:\exam\exam.txt ‘ Write(1,*)’学生的成绩为:’用于在写在前面打开的1文件里写数据,其中*和0、5、6是系统预定义的设备号由系统隐含规定。一个文件名只能和一个设备号建立联系,同样一个设备号也只能与一个文件建立联系,一个通过OPEN语句打开并指定了设备号的文件不能再次用OPEN语句打开 Read(1,*)表示从文件里面读取数据,一次读取一个数据,数据间用逗号隔开 每隔一个read语句或write语句默认的换一行读入或写入 Write(1,”(‘输入’)”)=write(1,*) ‘输入’ Write(1,”(‘I3,’输出’,I7)”) x,y结果是x以3个整型字符输出,输出,y以7个整型输出 Read(1,100)或write(1,100)I,j,k 100 format(I3,I7,F6)表示按照100语句的格式读入或输出顺序读写数据: Read(uint设备号,fmt格式说明,end结束语句转移,eor错误语句转移) 输入数据可以按规定的域宽输入,也可以用逗号强制间隔, 1. 使用read语句读取数据时,read语句输入表中的数据类型和格式应该与当前指针位置 数据类型和格式一致。 2. 使用read语句读取数据时,从当前文件指针开始读取,完成读取后文件指针自动后移一个记录,使用OPEN和REWIND语句时,文件指针指向第一个记录,从第一个记录开始读取。 3. 使用read语句读取时,如果输入表要求输入的数据少于当前记录的数据个数,则多余的数据将被忽略,下一个read语句从下一个新的记录开始读取数据。相反则继续读取下条数据记录直到读完全部输入数据。 4. 使用write语句时,从当前文件指针开始存写,完成存写后文件指针自动后移一个记录,使用OPEN和REWIND语句时,文件指针指向第一个记录,从第一个记录开始读取。如果文件已存在,则原文件的数据将丢失。 5. 使用write语句写入数据时,从当前的位置开始写入,可使用format语句中的格式说明及括号和反斜杠/创建多条新纪录写入,完成操作后,文件指针自动后移一个记录。 6. 使用了read以后,立即使用write语句,将导致写入的数据为最后一个记录,其余的数据将丢失。如果在文件末尾要写入新的记录可以通过下了语句实现: 100 read(1,*,end=200) Goto 100 200 write(1,*)’’ 7. 使用了write语句立即使用read语句会遇到一个文件结束标志。如果写入后要立即进行读取,需要用OPEN、rewind、backspace等对文件重新定位。 文件打开操作: Open(unit=设备号,file=文件名,access=存取方式,form=存取格式,recl=记录长度,err=错误转移,pad=补加空格,position=读取位置) 如err=100,表示跳到 100号语句

fopen , fread fwrite 函数读写二进制文件

fopen , fread fwrite 函数读写二进制文件 1#include 2#include 3int writeFile(const char* _fileName, char* _buf, unsigned int _bufLen) 4{ 5FILE * fp = NULL; 6if( NULL == _buf || _bufLen <= 0 ) return (-1); 7 8 fp = fopen(_fileName, "wb"); // 必须确保是以二进制写入的形式打开 9 10if( NULL == fp ) 11 { 12return (-1); 13 } 14 15 fwrite(_buf, _bufLen, 1, fp); //二进制写 16 17 fclose(fp); 18 fp = NULL; 19 20return 0; 21} 22int readFile(const char* _fileName, char* _buf,unsigned int _bufLen) 23{ 24FILE* fp = NULL; 25if( NULL == _buf || _bufLen <= 0 ) return (-1); 26 27 fp = fopen(_fileName, "rb"); // 必须确保是以二进制读取的形式打开 28 29if( NULL == fp ) 30 { 31return (-1); 32 } 33 34 fread(_buf, _bufLen, 1, fp); // 二进制读 35 36 fclose(fp); 37return 0; 38} 39 40int main(){ 41char * _buf;

word格式化文档技巧

第2章格式化文档技巧 不论是用笔还是用电脑撰写文章,最重要的肯定是要言之有物。但除了内容之外,形式也是很重要的。尤其是使用文字处理软件撰写文章、专著,如果懂得如何快速、巧妙地设置格式,不仅可以使文稿样式美观,更可以加快编写速度。而如果不懂得这些基本的格式化手段,编辑起文稿来,就会感到处处受到束缚,写作过程也难以顺畅,影响工作效率。 2.1 格式化字符技巧 字符可以是一个汉字,也可以是一个字母、一个数字或一个单独的符号,字符的格式包括字符的字体、大小、粗细、字符间距及各种表现形式。 简单的字符格式可以通过工具栏上的按钮来进行排版操作,如,设置字体加粗,可以单击工具栏上的按钮来实现、设置字体字号,可以单击工具栏上的【字号】下拉列表按钮来选择字号等;也可以通过快捷键来完成,如,选择字体下划线,可以单击【下划线】按钮或在下拉列表中选择下划线的线型。 但是,一些特殊的字体必须通过【字体】对话框才能完成设置。如果要制作出更具有艺术性的字符效果,如,变形字体、旋转字等,可以通过艺术字来完成。使用【格式】工具栏格式化字符可以设置一些简单的字符格式。 2.1.1 随意地选择字号 选择字号方法很简单,单击常用工具栏上的下拉列表按钮,在字号列表中选择或输入字号。 字号的表示方法有两种,一种是中文数字,数字越小,对应的字号越大;另一种是阿拉伯数字,字号越小,字符也就越小。字号的单位为磅,用毫米换算的方法为:1毫米=2.83磅;磅与号的换算单位是:1磅=1/72英寸,1英寸=21.4毫米。 在Word中,表述字体大小的计量单位有两种,一种是汉字的字号,如初号、小初、一号、…七号、八号;另一种是用国际上通用的“磅”来表示,如4、4.5、10、12、… 48、72等。 中文字号中,“数值”越大,字就越小,所以八号字是最小的;在用“磅”表示的字号时,数值越小,字符的尺寸越小,数值越大,字符的尺寸越大。1磅有多大呢?2.83磅等于1毫米,所以28号字大概就是一厘米高的字,约相当于中文字号中的一号字。

1使用Matlab产生二进制文件bin

Matlab中如何实现二进制文件的读写 说明:matlab产生的是.bin二进制文件。.bit是FPGA的比特流文件 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen 函数的调用格式为: fid=fopen(文件名,‘打开方式') 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: ‘r':只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+':读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w':打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+':读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a':在打开的文件末端添加数据。文件不存在则创建。 ‘a+':打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如‘rt'或‘wt+',则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all')。 2、二进制文件的读写操作

1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,'precision') 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件 fid = 3 %其值大于0,表示打开成功 >> fwrite(fid,a,'double') ans = 9 %表示写入了9个数据 >> fclose(fid) ans = 0 %表示关闭成功 2)读二进制文件 fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为: [A,COUNT]=fread(fid,size,'precision') 说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N 个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。precision用于控制所写数据的精度,其形式与fwrite函数相同。 %写一维数据至数据文件 n=0:pi/10:4*pi; y=sin(n); fip=fopen('C:\binary3.bin','wb'); fwrite(fip,Pxx,'double'); fclose(fip); %从数据文件读取一维数据 fip=fopen('C:\binary3.bin','rb'); [M,N]表示[SIN,num]=fread(fip,[2,20],'double');%inf表示读取文件中的所有数据,1列中列中,N 表示将读取的数据放置在将读取的数据放置在%M行N fclose(fip) %写二维数据至数据文件n=0:pi/10:4*pi; y1=sin(n);y2=sin(n);y3=0.5*sin(n); y=[y1;y2;y3]; fip=fopen('C:\binary4.bin','wb'); fwrite(fip,y,'double'); ,则表示存储数据正常fclose(fip); %返回指针的值为0 从数据文件读取二维数据% fip=fopen('C:\binary4.bin','rb'); 表示表示读取文件中的所有数据,[M,N][Array_2D,num]=fread(fip,inf,'double');%inf 1列中N行N列中,表示将读取的数据放置在%将读取的数据放置在M fclose(fip)

第2章Word文档格式化基础

百度文库 第2章格式化文档技巧 (27) 格式化字符技巧 (27) 2.1.1 随意地选择字号 (27) 2.1.2 选择字形效果 (28) 2.1.3 调整字符的宽与高 (29) 2.1.4 调整字符的间距 (30) 2.1.5 更改英文大小写字母 (31) 2.1.6 设置文档的度量单位 (32) 格式化段落技巧 (33) 2.2.1 让段落首行缩进 (33) 2.2.2 设置首字下沉 (34) 2.2.3 页面垂直对齐方式 (35) 2.2.4 设置文本对齐方式 (36) 2.2.5 控制段落的自动分页 (37) 2.2.6 给段落硬分页 (39) 2.2.7 取消后台重新分页功能 (40) 2.2.8 控制字符的断行 (40) 设置制表位技巧 (41) 2.3.1 设置制表位的对齐方式 (41) 2.3.2 设置制表位前导符 (42) 2.3.3 手动给目录添加制表符 (42) 2.3.4 快速格式化文档的技巧 (43) 中文版式设置技巧 (44) 2.4.1 给汉语加注拼音 (44) 2.4.2 创建带圈字符 (46) 2.4.3 双行合一 (46) 2.4.4汉字简繁体转换 (47)

第2章格式化文档技巧 不论是用笔还是用电脑撰写文章,最重要的肯定是要言之有物。但除了内容之外,形式也是很重要的。尤其是使用文字处理软件撰写文章、专著,如果懂得如何快速、巧妙地设置格式,不仅可以使文稿样式美观,更可以加快编写速度。而如果不懂得这些基本的格式化手段,编辑起文稿来,就会感到处处受到束缚,写作过程也难以顺畅,影响工作效率。 格式化字符技巧 字符可以是一个汉字,也可以是一个字母、一个数字或一个单独的符号,字符的格式包括字符的字体、大小、粗细、字符间距及各种表现形式。 简单的字符格式可以通过工具栏上的按钮来进行排版操作,如,设置字体加粗,可以单击工具栏上的按钮来实现、设置字体字号,可以单击工具栏上的【字号】下拉列表按钮来选择字号等;也可以通过快捷键来完成,如,选择字体下划线,可以单击【下划线】按钮或在下拉列表中选择下划线的线型。 但是,一些特殊的字体必须通过【字体】对话框才能完成设置。如果要制作出更具有艺术性的字符效果,如,变形字体、旋转字等,可以通过艺术字来完成。使用【格式】工具栏格式化字符可以设置一些简单的字符格式。 2.1.1 随意地选择字号 选择字号方法很简单,单击常用工具栏上的下拉列表按钮,在字号列表中选择或输入字号。 字号的表示方法有两种,一种是中文数字,数字越小,对应的字号越大;另一种是阿拉伯数字,字号越小,字符也就越小。字号的单位为磅,用毫米换算的方法为:1毫米=2.83磅;磅与号的换算单位是:1磅=1/72英寸,1英寸=21.4毫米。 在Word中,表述字体大小的计量单位有两种,一种是汉字的字号,如初号、小初、一号、…七号、八号;另一种是用国际上通用的“磅”来表示,如4、、10、12、…48、72等。 中文字号中,“数值”越大,字就越小,所以八号字是最小的;在用“磅”表示的字号时,数值越小,字符的尺寸越小,数值越大,字符的尺寸越大。1磅有多大呢?2.83

ASCII和二进制文件的输入输出

很长时间不用c++了,都快忘了,转个文章以作备份 文章详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。 一、ASCII 输出 为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代,所有的C++标准头文件都是无后缀的。)。这是的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了!但这篇文章介绍的方法,我们分别使用"ifstream"?和"ofstream" 来作输入输出。 如果你用过标准控制台流"cin"?和"cout," 那现在的事情对你来说很简单。我们现在开始讲输出部分,首先声明一个类对象。 ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。 fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件. ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。 int num = 150; char name[] = "John Doe"; fout << "Here is a number: " << num << "\n"; fout << "Now here is a string: " << name << "\n"; 现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。回写看起来像另一次输出, 然后调用方法关闭。像这样: fout << flush; fout.close(); 现在你用文本编辑器打开文件,内容看起来是这样:Here is a number: 150 Now here is a string: John Doe 很简单吧! 现在继续文件输入, 需要一点技巧, 所以先确认你已经明白了流操作,对"<<" 和">>" 比较熟悉了, 因为你接下来还要用到他们。继续… 二、ASCII 输入 输入和"cin" 流很像. 和刚刚讨论的输出流很像, 但你要考虑几件事情。在我们开始复杂的内容之前, 先看一个文本:

Fortran学习总结

1、用结构体读取二进制文件存在的问题及解决方案 在讲这个问题之前,我们先看一段代码: 01 program fcode_cn 02 integer(4)::i=1,j=2,k=3 03 character::ch*2='cn' 04 type head 05 !sequence 06 character*2ch 07 integer(4)i,j,k 08 end type 09 type(head)he 10 11 open(11,file='11.txt',access='stream') 12 write(11)ch,i,j,k 13 close(11) 14 ! 方法1 15 open(11,file='11.txt',access='stream') 16 read(11)he.ch,he.i,he.j,he.k 17 close(11) 18 print*,he 19 ! 方法2 20 open(11,file='11.txt',access='stream') 21 read(11)he 22 close(11) 23 print*,he 24 pause 25 end 代码开头先向文件11.txt中写入一个字符串”cn”和3个4字节整数1, 2, 3 ,然后分别使用方法1和方法2读取并输出数据。 从代码本身分析,我们向文件中写入了14个字节的信息,方法1和方法2均用结构体去读取这个14字节信息。理论上说,这不存在问题,但是在执行时,我们遇到下面的错误(图1):

读取同样的数据为什么方法1能够正确执行,而方法2却遇到文件尾呢?这跟结构体元素的对齐方式有关。 打开项目属性-Fortran-data,点开structure member alignment选项(如图2),查看对齐方式,有1字节、2字节、4字节、8字节和16字节,win32系统缺省为4字节。 现在我们来解释上面出现的错误。由于win32系统缺省对齐方式为4字节,在使用方法2进行文件读取的时候,每次从文件中读取4字节数据,依次赋值给变量ch, i, j, k。因此需要读取4×4=16字节信息,但文件中仅有14字节信息,故出现如上错误。 为避免以上错误: 一是采用方法1进行读取,但如果结构体太复杂,比如为SEGY数据道头时,这种方法不可取; 二是将structure member alignment选项设置为1字节,这依赖于编译器设置,可移植性较差。 我们推荐另一种解决方案,即在结构体定义部分加上sequence指令: type head sequence character*2 ch integer(4) i,j,k

相关文档
最新文档