Fortran的基本输入输出
迄今为止,我们已经看到,我们可以使用打印*语句读取分别使用读取*语句键盘和显示输出数据到屏幕上。输入输出的形式是自由格式的 I / O,它被称为列表控制的输入输出。
自由格式简单的I / O的形式为:
read(*,*) item1, item2, item3... print *, item1, item2, item3 write(*,*) item1, item2, item3...
然而,格式化I / O让您的数据传输更多的灵活性。
格式化输入输出
格式化输入输出有语法如下:
read fmt, variable_list print fmt, variable_list write fmt, variable_list
哪里,
FMT是格式规范
可变列表被从键盘被读或写在屏幕上的变量的列表
格式规范定义,其中显示格式化的数据的方式。它由一个字符串,包含编辑描述符的括号中的列表。
一个编辑描述符指定的精确格式,例如,宽度,其中显示后小数点等,数字字符和数字。
例如:
Print "(f6.3)", pi
下表描述了描述:
描述符 | 描述 | 例 |
---|---|---|
一世 | 这是用于整数输出。此采用的形式为“rIw.m',其中的R,W和M的含义在下面的表中给出。整数值是在他们的视场科幻权JUSTI网络版。如果场宽度不是大到足以容纳一个整数那么场是网络连接有星号LLED。 | 打印“(3i5)”,I,J,K |
F | 这是用于实数输出。此采用的形式为“rFw.d',其中的R,W和D的含义在下面的表中给出。真正的价值在他们的网络的视场右侧JUSTI网络版。如果场宽度不够大以容纳实数则场是音响LLED以星号。 | 打印“(f12.3)”,圆周率 |
Ë | 这是用于指数符号实际产出。在'E'描述语句的形式为'rEw.d',其中的R,W和D的含义如下表所示。真正的价值在他们的网络的视场右侧JUSTI网络版。如果场宽度不够大以容纳实数则场是音响LLED以星号。 请注意,打印出三位小数,需要至少十的场宽度的实数。一个用于尾数,两个零,四项尾数和两个用于指数本身的符号。一般来说,W≥D + 7。 | 打印“(e10.3)”,123456.0给出了'0.123e + 06' |
ES | 这是用于实际产出(科学记数法)。此采用的形式为“rESw.d',其中的R,W和D的含义在下面的表中给出。在“E”上面的描述符迪FF ERS稍微从传统的著名“科学的C表示法”介绍。科学的C表示法具有范围1.0尾数〜10.0不像其具有在0.1到1.0的尾数对E描述符。真正的价值在他们的网络的视场右侧JUSTI网络版。如果场宽度不够大以容纳实数则场是音响LLED以星号。这里还,宽度场必须满足表达W¯¯≥D + 7 | 打印“(es10.3)”,123456.0给出了'1.235e + 05' |
一个 | 这是用于字符输出。这需要其中r和W的含义如下表中给出的形式“原始”。性格类型是在他们的网络的视场右侧JUSTI网络版。如果场宽度不足够大以容纳字符串则场是音响与第一个“W”的字符串的字符LLED。 | 打印“(A10)”,STR |
X | 这是用于空间输出。这种形式定义的NX“,其中”n“是所需空间的数量。 | 打印“(5倍,A10)”,STR |
/ | 斜线描述 - 用于插入空行。这需要的形式'/',并强制下一个数据输出为一个新行。 | 打印“(/,5倍,A10)”,STR |
以下符号用于与格式描述符:
符号 | 描述 |
---|---|
C | 列号 |
ð | 中位数为实际输入或输出的小数位的权 |
米 | 要显示的最小位数 |
ñ | 空格数跳过 |
- [R | 重复计数 - 的次数要使用的描述符的描述符或一组 |
W¯¯ | 域宽度 - 的字符数用于输入或输出 |
例1
program printPi pi = 3.141592653589793238 Print "(f6.3)", pi Print "(f10.7)", pi Print "(f20.15)", pi Print "(e16.4)", pi/100 end program printPi
当上述代码被编译和执行时,它产生了以下结果:
3.142 3.1415927 3.141592741012573 0.3142E-01
例2
program printName implicit none character (len=15) :: first_name print *,' Enter your first name.' print *,' Up to 20 characters, please' read *,first_name print "(1x,a)",first_name end program printName
当上述代码被编译和执行时,它产生了以下结果:(假设用户输入的名称扎拉)
Enter your first name. Up to 20 characters, please Zara
例3
program formattedPrint implicit none real :: c = 1.2786456e-9, d = 0.1234567e3 integer :: n = 300789, k = 45, i = 2 character (len=15) :: str="Tutorials Point" print "(i6)", k print "(i6.3)", k print "(3i10)", n, k, i print "(i10,i3,i5)", n, k, i print "(a15)",str print "(f12.3)", d print "(e12.4)", c print '(/,3x,"n = ",i6, 3x, "d = ",f7.4)', n, d end program formattedPrint
当上述代码被编译和执行时,它产生了以下结果:
45 045 300789 45 2 300789 45 2 Tutorials Point 123.457 0.1279E-08 n = 300789 d = *******
该声明的格式
格式语句允许您在一个声明中混合和匹配字符,整数和实输出。下面的例子说明了这一点:
program productDetails implicit none character (len=15) :: name integer :: id real :: weight name = 'Ardupilot' id = 1 weight = 0.08 print *,' The product details are' print 100 100 format (7x,'Name:', 7x, 'Id:', 1x, 'Weight:') print 200, name, id, weight 200 format(1x, a, 2x, i3, 2x, f5.2) end program productDetails
当上述代码被编译和执行时,它产生了以下结果:
The product details are Name: Id: Weight: Ardupilot 1 0.08