参考: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. Google Chrome浏览器之删除Goolge搜索结果重定向插件Remove Google Redirects

    https://chrome.google.com/webstore/detail/remove-google-redirects/ccenmflbeofaceccfhhggbagkblihpoh?h ...

  2. mysql drop table命令使用总结

    drop性能 drop table(innodb引擎) 数量2000w,只需要5m

  3. ZYThumbnailTableView---堪比一个小型阅读App

    Demo github地址: https://github.com/liuzhiyi1992/ZYThumbnailTableView 原文地址:http://zyden.vicp.cc/zythum ...

  4. 宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程

    一.分布式任务调度的背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.我们常常需要一些任务调度系统来帮助解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此背 ...

  5. Finder 快捷键

    记录几个常用的 Finder 快捷键: 复制 Finder 里选中的路径:option+cmd+c 地址栏跳到指定路径:shift+cmd+g 增加标签:cmd+t 显示/隐藏 标签栏:shift+c ...

  6. java 多线程2(转载)

    http://www.cnblogs.com/DreamSea/archive/2012/01/11/JavaThread.html Ø线程的概述(Introduction) 线程是一个程序的多个执行 ...

  7. Lua_第17 章 数学库

    第17 章 数学库 在这一章中(以下关于标准库的几章中相同)我的主要目的不是对每个函数给出完整地说明,而是告诉你标准库可以提供什么功能.为了可以清楚地说明问题,我可能 会忽略一些小的选项或者行为.基本 ...

  8. static 静态域 类域 静态方法 工厂方法 he use of the static keyword to create fields and methods that belong to the class, rather than to an instance of the class 非访问修饰符

    总结: 1.无论一个类实例化多少对象,它的静态变量只有一份拷贝: 静态域属于类,而非由类构造的实例化的对象,所有类的实例对象共享静态域. class Employee { private static ...

  9. java中两字符串比较--compareTo方法

    java.lang.String.compareTo() 方法比较两个字符串的字典,比较是基于字符串中的每个字符的Unicode值 String n1 = "1"; String ...

  10. NYOJ-37 回文字符串 —— LCS变形

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=37 题解: 一开始想从两边向中间添加字符,发现这样不是最优的.因为加入字符之后,这些原本存 ...