参考:I/O - General Input/Output Routines —— 基本输入输出函数


01   PRINT/PRINTF 格式化输出。
02   READ/READF 格式化输入。
03   READS 从字符串中读取格式化数据。
04   Format Codes 格式化控制。
05   OPENR/OPENU/OPENW 打开文件。
06   EOF 测试指定文件单元是否到达文件结尾,返回布尔值。
07   GET_LUN 获取一个逻辑设备号。
08   FREE_LUN 释放一个逻辑设备号并关闭文件。
09   POINT_LUN 设置或者获取指定文件的文件指针位置。
10   SKIP_LUN 移动文件指针来读取文件。
11   CLOSE 关闭文件。
12   READU 读取二进制文件。
13   WRITEU 写入二进制文件。

序号 名称  

功能说明

  语法 & 举例
01 PRINT/PRINTF  

格式化输出(PRINTF 用于输出到文件)。
----------------------------------------------------------------------------------
PRINT [, Expression1, ..., Expressionn]
----------------------------------------------------------------------------------
PRINTF [, Unit, Expression1, ..., Expressionn]
----------------------------------------------------------------------------------
Keywords: [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, /IMPLIED_PRINT] [, MONTHS=string_array{12 names}] [, /STDIO_NON_FINITE]
----------------------------------------------------------------------------------
◈ Unit:欲输出的文件单元(逻辑设备号)
◈ FORMAT=value:格式化控制

 
IDL> PRINT, 'IDL is fun.'
IDL is fun.
 02 READ/READF

格式化输入(READF 用于文件的读取)。
----------------------------------------------------------------------------------
READ, [Prompt,] Var1, ..., Varn
----------------------------------------------------------------------------------
READF, [Prompt,] Unit, Var1, ..., Varn
----------------------------------------------------------------------------------
Keywords: [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, MONTHS=string_array{12 names}] [, PROMPT=string]
----------------------------------------------------------------------------------
◈ Unit:欲读取的文件单元(逻辑设备号)
◈ FORMAT=value:格式化控制
◈ PROMPT=string:提示字符串

 
IDL> B=''
IDL> READ, B, PROMPT='Enter Name: '
Enter Name: ALEX
IDL> B
ALEX
 03 READS  

从字符串中读取格式化数据。
----------------------------------------------------------------------------------
READS, Input, Var1, ..., Varn [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, MONTHS=string_array{12 names}]
----------------------------------------------------------------------------------
◈ Input:读取的字符串
◈ Vari:赋值的变量
◈ FORMAT=value:格式化控制

 
IDL> str='abc100def'
IDL> a=''
IDL> b=0
IDL> c=''
IDL> READS,str,a,b,c,FORMAT='(A3,I3,A3)'
IDL> PRINT,a,b,c
abc 100def
IDL> HELP,a,b,c
A STRING = 'abc'
B INT = 100
C STRING = 'def'
04 Format Codes  

格式化控制。
----------------------------------------------------------------------------------
[n]FC[+][-][width]
----------------------------------------------------------------------------------
◈ n:代表格式控制符的重复次数,默认为1次,所谓重复次数是指在一行中格式控制的次数,n=1,表示每行只显示一个变量,n=2,表示每行显示两个变量,n≥变量总数,单行显示
◈ FC:Format Codes,格式控制符
◈ +:正数前加“+”,仅对数字格式化输出有效(包括0)
◈ -:字符串和数字左对齐,默认是右对齐
◈ width:数字或字符的宽度

 
IDL> ;格式符控制重复三次,一行显示三个
IDL> PRINT, FORMAT='(3I6)', [0, 10, 20]
0 10 20
-----------------------------------------
IDL> ;6个字符宽度,非负数前加“+”
IDL> PRINT, FORMAT='(I+6)', [-10, 0, 10]
-10
+0
+10
-----------------------------------------
IDL> ;6个字符宽度,左对齐
IDL> PRINT, FORMAT='(I-6)', [-10, 0, 10]
-10
0
10
-----------------------------------------
IDL> ;格式符宽度与字符串宽不符,字符串短则右对齐输出,长则截断
IDL> PRINT, FORMAT='(A4)', ['ABCDEF', 'AB']
ABCD
AB
-----------------------------------------
IDL> ;格式符宽度与数字长度不符,数字短则右对齐输出,长则输出为“*”
IDL> PRINT, FORMAT='(I3)', [12, 123, 1234]
12
123
***
-----------------------------------------
IDL> ;格式输出数字时前加0,数字短则左侧自动补0
IDL> PRINT, FORMAT='(I03)', [12, 123, 1234]
012
123
***
-----------------------------------------
IDL> ;格式符宽度为0,则依照原始格式输出
IDL> PRINT, FORMAT='(I0)', [12, 123, 1234]
12
123
1234
-----------------------------------------
IDL> ;总宽度为6,数字宽度为4,不足的用0填充
IDL> PRINT, FORMAT='(I6.4)', [12, 123, 1234]
0012
0123
1234
 

FC —— 字符、字符串及整数
----------------------------------------------------------------------------------
[n]A[-][w]
[n]I[+][-][w][.m]
[n]B[-][w][.m]
[n]O[-][w][.m]
[n]Z[-][w][.m]
----------------------------------------------------------------------------------
◈ A:字符及字符串的格式化输入输出
◈ I:整数输入输出时的 十进制
◈ B:整数输入输出时的 二进制
◈ O:整数输入输出时的 八进制
◈ Z:整数输入输出时的 16进制
◈ w:输入输出宽度
◈ m:无空格的宽度,无数字部分由 0 填充

 

FC —— 输入输出位置控制
----------------------------------------------------------------------------------
Tn
TLn
TRn
nX
----------------------------------------------------------------------------------
◈ T:变量输出的绝对位置,n 表示位置值
◈ TL:从当前位置向左移动,n 表示向左移动的字符数
◈ TR:从当前位置向右移动,n 表示向右移动的字符数
◈ X:空格输出,n 是空格的个数

 
IDL> ;绝对位置为6,为2的时候,将原数据替换
IDL> PRINT, FORMAT='("AB", T6, "CD")'
AB CD
IDL> PRINT, FORMAT='("AB", T2, "CD")'
ACD
-------------------------------------------------
IDL> ;左右移动输出
IDL> PRINT, FORMAT='("AB", 2X, "CD", 4X, "EF")'
AB CD EF
IDL> PRINT, FORMAT='("AB", "CD", TL2, "EF")'
ABEF
IDL> PRINT, FORMAT='("AB", "CD", TR4, "EF")'
ABCD EF
 

FC —— 浮点数格式符(F、D、E、G)
----------------------------------------------------------------------------------
[n]F[+][-][w][.d]
[n]D[+][-][w][.d]
[n]E[+][-][w][.d]
[n]G[+][-][w][.d]
----------------------------------------------------------------------------------
◈ F:以定点计数法输出浮点型(单精度)
◈ D:以定点计数法输出浮点型(双精度)
◈ E:指数形式(科学格式)输出
◈ G:根据数据大小自动选择科学格式E或F格式输出
◈ w:字符宽度
◈ d:四舍五入的精度

 
IDL> ;浮点数显示,精度,科学计数法
IDL> PRINT, FORMAT='(F10.4)', [11.22225, 115486.3, 2.0]
11.2222
**********
2.0000
IDL> PRINT, FORMAT='(E15.4)', [11.22225, 115486.3, 2.0]
1.1222E+001
1.1549E+005
2.0000E+000
IDL> PRINT, FORMAT='(G12.4)', [11.22225, 115486.3, 2.0]
11.22
1.155E+005
2.000
 

FC —— C()日期与时间输出
----------------------------------------------------------------------------------
[n]C([c0,c1,...,cx])
CMOA[-][w]、CMoA[-][w]、CmoA[-][w]
CMOI[+][-][w][.m]
CDI[+][-][w][.m]
CYI[+][-][w][.m]
CHI[+][-][w][.m]、ChI[+][-][w][.m]
CMI[+][-][w][.m]
CSI[+][-][w][.m]
CSF[+][-][w][.d]
CDWA[-][w]、CDwA[-][w]、CdwA[-][w]
CAPA[-][w]、CApA[-][w]、CapA[-][w]
----------------------------------------------------------------------------------
◈ CMOA:C-MONTH-A,字符串形式输出月,Cmoa-dec、CMoA-Dec、CMOA-DEC
◈ CMOI:C-MONTH-I,数字形式输出月
◈ CDI:C-DAY-I,数字形式输出日
◈ CYI:C-YEAR-I,数字形式输出年
◈ CHI:C-HOUR-I,数字形式输出小时,CHI-14(24小时制)、ChI-2(12小时制)
◈ CMI:C-MINUTE-I,数字形式输出分钟
◈ CSI:C-SECOND-I,数字形式输出秒
◈ CSF:C-SECOND-F,浮点数形式输出秒
◈ CDWA:C-DAY-WEEK-A,字符串形式输出星期,cdwa-sun、CDwa-Sun、CDWA-SUN
◈ CAPA:C-AM-PM-A,字符串形式输出上午或下午,capa-pm、CApa-Pm、CAPA-PM

 
IDL> ;日期输出,下面补0
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CYI, "-", CMOI, "-", CDI))'
2016- 8-26
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI, ":", CMI, ":", CSI))'
14:35:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CYI, "-", CMOI02, "-", CDI02))'
2016-08-26
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI02, ":", CMI02, ":", CSI02))'
14:35:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI4.3, ":", CMI5.4, ":", CSI0.3))'
014: 0035:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(ChI4.3, ":", CMI5.4, ":", CSI0.3))'
002: 0035:56
 05 OPENR/OPENU/OPENW  

打开文件。
OPENR:打开读文件,文件已经存在
OPENW:打开写文件,文件不存在新建文件,文件存在则删除原内容
OPENU:打开更新文件,文件已经存在
----------------------------------------------------------------------------------
OPENR, Unit, File
----------------------------------------------------------------------------------
OPENW, Unit, File
----------------------------------------------------------------------------------
OPENU, Unit, File
----------------------------------------------------------------------------------
Keywords: [, /APPEND | , /COMPRESS] [, BUFSIZE={0 | 1 | value>512}] [, /DELETE] [, ERROR=variable] [, /F77_UNFORMATTED] [, /GET_LUN] [, /MORE] [, /NOEXPAND_PATH] [, /STDIO] [, /SWAP_ENDIAN] [, /SWAP_IF_BIG_ENDIAN] [, /SWAP_IF_LITTLE_ENDIAN] [, /VAX_FLOAT] [, WIDTH=value] [, /XDR]
----------------------------------------------------------------------------------
◈ Unit:欲打开的文件单元(逻辑设备号)
◈ File:文件的路径,字符串
◈ APPEND:指针定位到文件的最后,准备添加信息,默认情况指针定位到文件的最开始
◈ GET_LUN:设置此关键字,将调用 GET_LUN 过程,在文件还没打开之前就对 Unit 赋值

 
  ;在文件中添加新内容
file="D:\IDL\blog\1.txt"
OPENW, lun, file, /APPEND, /GET_LUN
PRINTF, lun, "alexbnlee"
FREE_LUN, lun
---------------------------------------
;读取文件中的内容,一行一行读取,并输出
str=''
file="D:\IDL\blog\1.txt"
OPENR, lun, file, /GET_LUN
WHILE(~EOF(lun)) DO BEGIN
READF, lun, str
PRINT, str
ENDWHILE
FREE_LUN, lun
 06 EOF  

测试指定文件单元是否到达文件结尾,返回布尔值。
----------------------------------------------------------------------------------
Result = EOF(Unit)
----------------------------------------------------------------------------------
◈ Unit:文件单元(逻辑设备号)

   
 07 GET_LUN  

获取一个逻辑设备号。
----------------------------------------------------------------------------------
GET_LUN, Unit
----------------------------------------------------------------------------------
◈ Unit:文件单元(逻辑设备号)

   
 08 FREE_LUN  

释放一个逻辑设备号并关闭文件。
----------------------------------------------------------------------------------
FREE_LUN [, Unit1, ..., Unitn] [, EXIT_STATUS=variable] [, /FORCE]
----------------------------------------------------------------------------------
◈ Uniti:文件单元(逻辑设备号)

   file="D:\IDL\blog\1.txt"
OPENR, lun, file, /GET_LUN ;获取文件的总字符数
SKIP_LUN, lun, /EOF, TRANSFER_COUNT=n_bytes
PRINT, n_bytes
;指针定位到文件开始
POINT_LUN, lun, 0
;获取文件的总行数
SKIP_LUN, lun, /LINES, /EOF, TRANSFER_COUNT=n_lines
PRINT, n_lines FREE_LUN, lun
 09 POINT_LUN  

设置或者获取指定文件的文件指针位置。
----------------------------------------------------------------------------------
POINT_LUN, Unit, Position
----------------------------------------------------------------------------------
◈ Unit:文件单元(逻辑设备号)
◈ Position:移动指针的字节数

10 SKIP_LUN  

移动文件指针来读取文件。
----------------------------------------------------------------------------------
SKIP_LUN, FromUnit, [, Num] [, /EOF] [, /LINES] [, /TRANSFER_COUNT=variable]
----------------------------------------------------------------------------------
◈ FromUnit:文件单元(逻辑设备号)
◈ Num:忽略的数目
◈ EOF:直接跳到文件结尾
◈ LINES:按照行来计数,默认按照字节来计数
◈ TRANSFER_COUNT=variable:记录忽略的数目,即 Num 的值,对于设置 EOF 而言,可以计算文件总的字符数或者总的行数

11 CLOSE  

关闭文件。
----------------------------------------------------------------------------------
CLOSE[, Unit1, ..., Unitn] [, /ALL] [, EXIT_STATUS=variable] [, /FILE] [, /FORCE]
----------------------------------------------------------------------------------
◈ Uniti:要关闭的文件单元(逻辑设备号)
◈ ALL:关闭所有打开的文件单元(逻辑设备号)

 
12 READU  

读取二进制文件。
----------------------------------------------------------------------------------
READU, Unit, Var1, ..., Varn [, TRANSFER_COUNT=variable]
----------------------------------------------------------------------------------
◈ Unit:欲读取的文件单元(逻辑设备号)
◈ Vari:接收数据的变量名

 
13 WRITEU  

写入二进制文件。
----------------------------------------------------------------------------------
WRITEU, Unit, Expr1 ..., Exprn [, TRANSFER_COUNT=variable]
----------------------------------------------------------------------------------
◈ Unit:欲读取的文件单元(逻辑设备号)
◈ Vari:接收数据的变量名

 
           

【222】◀▶ IDL 输入输出函数说明的更多相关文章

  1. c语言的输入输出函数

    参考文章: http://blog.sina.com.cn/s/blog_784f40b80100psg9.html C语言输入输出函数分为两类: 1.格式化输入输出函数 2.非格式化输入输出 --- ...

  2. C语言中最常用的三种输入输出函数scanf()、printf()、getchar()和putchar()

    本文给大家介绍C语言中最常用的三种输入输出函数scanf().printf().getchar()和putchar(). 一.scanf()函数格式化输入函数scanf()的功能是从键盘上输入数据,该 ...

  3. C语言中输入输出函数

    1.1.1 格式化输入输出函数Turbo C2.0 标准库提供了两个控制台格式化输入. 输出函数printf() 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据.pri ...

  4. Linux C 程序 输入输出函数(THREE)

    标准输入输出函数#include<stdio.h>stdio 是 standard input & output 的缩写 字符数据输入输出函数: putchar() , getch ...

  5. c语言输入输出函数

    上学年学习c语言的时候比较匆忙,没好好吸收. 现在有时间好好复习下. 本文就c语言常见输入函数进行简单介绍,对比. ps:由于自己能力有限,时间有限,多数介绍,总结都是摘录网上相关学习资料,下面给出本 ...

  6. C字符串输入输出函数

    下面就几个常用的字符串输入输出函数做个小小的总结TAT 使用时添加头文件:#include<stdio.h>. scanf("格式控制字符串",变量地址列表):(pri ...

  7. C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化

      一.字符串输入输出函数 1.  cin.get()   逐个字符输入输出 2.  cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...

  8. C语言 · 字符串输入输出函数

    算法提高 3-2字符串输入输出函数   时间限制:1.0s   内存限制:512.0MB      描述 编写函数GetReal和GetString,在main函数中分别调用这两个函数.在读入一个实数 ...

  9. C语言学习<输入输出函数,函数的调用>

    #include <stdio.h> /* 输入输出函数的学习 函数的调用 2017.05.25 soulsjie */ //输入连个数字求最大值 void main(){ int Max ...

随机推荐

  1. Android实战简易教程-第二十三枪(基于Baas的用户注冊和登录模块实现!)

    接着上两篇文章.我们基于Bmob提供的API实现用户登录功能.总体看一下代码. 1.注冊页面xml: <RelativeLayout xmlns:android="http://sch ...

  2. 【网络协议】TCP的流量控制机制

    一般来说,我们总是希望传输数据的更快一些,但假设发送方把数据发送的非常快.而接收方来不及接收,这就可能造成数据的丢失.流量控制就是让发送方的发送速率不要太快.让接收方来得及接收. 对于成块数据流,TC ...

  3. cygwin配置个人环境,android模拟器root映象和Babun

    零.Windows命令行个人设置 @echo off :: Temporary system path at cmd startup ::set PATH=%PATH%;"C:\Progra ...

  4. fedora delete openJDK

    博客分类: linux   由于Fedora系统安装的时候会自带OpenJDK,安装完系统后 java -version 会显示  [root@localhost bin]# java -versio ...

  5. 新一代AJAX API:FETCH

    AJAX半遮半掩的底层API是饱受诟病的一件事情. XMLHttpRequest 并不是专为Ajax而设计的. 虽然各种框架对 XHR 的封装已经足够好用, 但我们可以做得更好.更好用的API是 fe ...

  6. shiro框架的使用

    1.配置二级缓存 <ehcache updateCheck="false" name="shiroCache"> <defaultCache ...

  7. 数据库中表的复杂查询&amp;分页

    一.数据库中表的复杂查询 1)连接查询 1.0连接的基本的语法格式: from TABLE1 join_type TABLE2 [on (join_condition)][where (query_c ...

  8. C# 操作World生成报告

    直接上代码 using System; using System.IO; using System.Data; using Word = Microsoft.Office.Interop.Word; ...

  9. 2251: [2010Beijing Wc]外星联络

    2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 801  Solved: 481[Submit][ ...

  10. android打包签名,从生成keystore到完成签名

    输入指令并获得结果:(对应自己的java安装目录) 首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文 ...