整型->字符型
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
integer :: intYear
character(len=4) :: txtYear
intYear = 1998
write(txtYear,"(I4)") intYear
write(*,*) txtYear
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
注意,
write(txtYear,"(I4)") intYear
中,txtYear为字符型。fortran将字符型变量txtYear看作一个文件,将数据intYear写入这个文件。
字符型->整型(下面的写法是错误的!)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
integer :: intYear
character(len=4) :: txtYear
txtYear = 1998
write(intYear,"(A4)") txtYear
write(*,*) iniYear
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
上面的写法错在:
intYear是整型变量,初始值为0,write将寻找unit=0的文件,结果找不到,报错!!!
这就是说,使用write进行类型转换时,只能进行整型->字符型的转换。要想将字符型转换到整型,要用到read命令:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
integer :: intYear
character(len=4) :: txtYear
txtYear = 1998
read(txtYear,"(I4)") iniYear
!read(txtYear(1:4),"(I4)") iniYear
write(*,*) iniYear
end
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
这种方法仍然以txtYear为文件,将其中的1998以整型读出。
read(txtYear(1:4),"(I4)") iniYear
可以将字符串中任意数据(第一到第四个字符之间的子串,包括第一和第四个字符)读出来!
试一试这种方法:
write(string, 'I3.3') intnumber
看一看他与
write(string, 'I3') intnumber
有什么区别!
另外,看一看下面地代码是什么意思:
CHARACTER*5 string1
intnumber=45
string1="(I??)"
WRITE(string1(3:4),"(I2.2)")int(log10(real(INTNUMBER))+1)
WRITE(*,string1)INTNUMBER
这个也很好:
write (string,*) intnumber
string = trim(adjustl(trim(string)))
Fortran中的字符串函数:
ichar(c):将一个字符转化为对应的序号,按处理器整理顺序排列,括号内也可以是字符串,但是只处理第一个字符
iachar(c):将一个字符转化为ascii码值,这是为非ascii平台提供的转化到ascii码值的函数
在ascii平台上,这两个函数等效的。
char(n) :将一个整数值转化为字符,按处理器顺序排列
achar(n) :将一个整数转化为字符,按ascii码顺序排列
char(n,kind),我还是不十分明确
-----------------
adjustL(s) :将字符串前面的空格挪到后面,字符串中间的空格不动,总字符串长度不变
adjustR(s) :字符串右对齐,字符串长度不变
-------------------
len(s) :求字符串长度函数
len_trim(s) :不计算字符串尾部空格长度
------------------
trim(s) :去除字符串尾部空格
------------------
index(s1,s2[,back]) :s2在s1中的起始位置,如果s2不是s1的子串,返回0,如果s2为''(空字符串),返回1。back=.true.时表示如果s2在s1中出现多次,按照最后一次出现的位置计算,如果省略或者back=.fasle.,则均按s2第一次出现的位置计算。例子:
s1='**123**23567'
index(s1,'23') 值为4
index(s1,'23',back=.true.) 值为8
(使用的是digital visual fortran 6.0,帮助中有
INDEX ('XXXX', " ", BACK = .TRUE.) 值为5
但是在其环境下测试,并非如此,仍然是0,不知道是否帮助文件的问题,还是其他原因。)
-----------------------
scan(s1,s2[,back]) :扫描s1中的每个字符判断是否包含于s2字符集中,并返回s1中第一个能够包含在s2中的字符位置,如果设置了back=.true.,则返回s1中从右面开始第一个包含于s2字符串中的字符位置。如果没有包含于s2字符集的字符,则返回0。例如:
s1='**123**23567'
scan(s1,'32') ! =4,s1中的'2'和'3'都属于'32'字符集,但是在s1中,第一个出现属于s2字符的是第4位置上的'2',所以返回4
scan(a1,'32', BACK = .TRUE.) !=9,从字符串s1右边开始计算,则3是第一个包含于'32'字符集的字符,位置数是9
verify(s1,s2[,back]) :与scan类似,但是判断是否有不包含于字符集的字符并返回其位置,back同样类似是表示从字符串右边开始寻找。具体就是判断s1中的每个字符是否有没有包含于s2字符集中的,如果存在则返回其在s1中的位置,否则返回0值。如果设置back=.true.,则从s1最右侧的字符开始判断。如果s1中的字符全部属于s2字符集,则返回0。例如
s1='**123**23567'
verify(s1,'32') ! =1,因为s1中的第一个字符'*'就不属于'32'字符集,所以函数返回1
verify(s1,'32',back=.true.) ! =12,从s1右面第一个字符开始检查,'7'不属于'32'字符集,所以返回'7'的位置12
verify(s1,'1234567*') ! =0,s1中的字符全部包含在s2字符集中
-----------------
repeat(s1,n) :将字符串s1重复N遍,n>=0
LGE(s1,s2) :s1是否>=s2
LGT(s1,s2) :s1是否>s2
LLT(s1,s2) :s1是否LLE(s1,s2) :s1是否<=s2
字符串等于仍然用.EQ.
转载:http://blog.163.com/niu_yingli/blog/static/237423852007464111970/
相关推荐
FORTRAN中整(实)型与字符型转换 Fortran字符串操作备忘录 产生序列文件名
用于fortran语言分割字符串和字符串替换的子程序
Fortran77到90转换,源代码 或许对你有帮助啊
一个把Fortran代码转成C代码的工具。
Matlab2Fortran(Matlab-to-Fortran)是将一个或多个MATLAB文件自动转换为Fortran格式的代码。该脚本将 matlab 的一些主要功能转换为 fortran。Matlab2Fortran逐行执行快速而脏的转换(但仍支持条件循环,子例程)。...
3. 字符串比较和转换:提供了函数用于比较两个字符串的大小关系,以及将字符串转换为大写或小写形式的函数。4. 字符串长度和截取:包含了获取字符串长度的函数,以及截取字符串的子串的函数。通过使用字符串模块,...
基于vs和QT库,转换不彻地,但是适合阅读和修改,不像f2c的结果基本看不懂。
批处理fortran77转fortran90格式. 由于f77不支持可变数组,导致想添加的功能不能实现,于是想把整个工程从77转成90。有同学推荐,直接在f77的模式下强行把f90的功能加进去(比如可变数组,module等),然后用...
C与Fortran混合编程,C向Fortran传递字符串,采用iso_c_binding,简单易懂。
E:\Fortran_G95>appjed 0. 参数个数: 1 0.000000000000000E+000 0.500000000000000 JDL: 0Y -4712-01-01.12:00:00.000 OK 第一个数是儒略日,第二个是格里日 JDL表示儒略历 E:\Fortran_G95>appjed -0001577-12-...
fortran_使用fortran实现的快速浮点数到字符串转换
C转fortran的一个工具,将C程序放到文件夹中,再运行程序
matlab2fortran(matlab-to-fortran):将matlab代码转换为fortran 用法:matlab2fortran(filename); 作者:Emmanuel Branlard(欢迎投稿) 建立日期:2012年12月 最近修订日期:2015-08-26 版本:1.0-29-g83df194...
可以讲数据转换为所需要的数据,内有解释,请详看
数据类型转换函数 资料数据类型转换函数 资料数据类型转换函数 资料
用于把fortran代码转换成matlab的m文件代码
文件中包含的文件为Fortran语言转到MATLAB环境中的语言,使得转换更为方便快捷,更好的对Fortran的一些动能应用到MATLAB中
Matlab2Fortran(Matlab-to-Fortran)是将一个或多个MATLAB文件自动转换为Fortran格式的代码。该脚本将 matlab 的一些主要功能转换为 fortran。Matlab2Fortran逐行执行快速而脏的转换(但仍支持条件循环,子例程)。...
MATLAB与FORTRAN接口技术,有matlab与fortran转换的可以需要下载
FORTRAN 单位换算器 exe 小程序,供初学者参考!也可以用于工程的单位换算中!