资源描述:
《fortran字符型与整型之间的转换》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Chapter1fortran字符型与整型之间的转换 2007-05-0616:01:11
2、 分类: Fortran
3、 标签:fortran
4、字号 订阅整型->字符型!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!integer ::intYearcharacter(len=4)::txtYearintYear=1998write(txtYear,"(I4)")intYearwrite(*,*)txtYearend!!!!!!!!!!!!!!!!!!!!!!!!!!!
5、!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意,write(txtYear,"(I4)")intYear 中,txtYear为字符型。fortran将字符型变量txtYear看作一个文件,将数据intYear写入这个文件。字符型->整型(下面的写法是错误的!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!integer ::intYearcharacter(len=4)::txtYeartxtYear=1998write(intYear,"(A4)
6、")txtYearwrite(*,*)iniYearend!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!上面的写法错在:intYear是整型变量,初始值为0,write将寻找unit=0的文件,结果找不到,报错!!!这就是说,使用write进行类型转换时,只能进行整型->字符型的转换。要想将字符型转换到整型,要用到read命令:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!integer ::int
7、Yearcharacter(len=4)::txtYeartxtYear=1998read(txtYear,"(I4)")iniYear!read(txtYear(1:4),"(I4)")iniYearwrite(*,*)iniYearend!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!这种方法仍然以txtYear为文件,将其中的1998以整型读出。read(txtYear(1:4),"(I4)")iniYear可以将字符串中任意数据(第一到第四个字符之间的子串,包括第一和第四个字符)读出来!
8、试一试这种方法:write(string,'I3.3')intnumber看一看他与write(string,'I3')intnumber有什么区别!另外,看一看下面地代码是什么意思:CHARACTER*5string1intnumber=45string1="(I??)"WRITE(string1(3:4),"(I2.2)")int(log10(real(INTNUMBER))+1)WRITE(*,string1)INTNUMBER这个也很好:write(string,*)intnumberstring=trim(adjustl(trim(string)))Fortra
9、n中的字符串函数:ichar(c):将一个字符转化为对应的序号,按处理器整理顺序排列,括号内也可以是字符串,但是只处理第一个字符iachar(c):将一个字符转化为ascii码值,这是为非ascii平台提供的转化到ascii码值的函数 在ascii平台上,这两个函数等效的。char(n) :将一个整数值转化为字符,按处理器顺序排列achar(n):将一个整数转化为字符,按ascii码顺序排列char(n,kind),我还是不十分明确-----------------adjustL(s):将字符串前面的空格挪到后面,字符串中间的空格不动,总字符串长度不变adjustR(s
10、):字符串右对齐,字符串长度不变-------------------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第一次