2013-03-18 63 views
1

我想讀它使用逗號作爲分隔符如下圖所示如何讀取逗號分隔的數據文件,如果一些數據包含空格

IPE 80,764,80.14,8.49 
IPE 100,1030,171,15.92 

但是一個數據文件。如果我讀使用

READ(1,*) var1, var2, var3, var4 

它讀取IPE和80作爲不同的數據。換句話說,它將逗號和空格作爲分隔符,但我不想要這樣。我怎麼能告訴我的程序「嘿,空格不是隻能分隔逗號!」 ?

+0

所以var1是一個字符類型? – 2013-03-18 20:03:06

回答

6

一種可能性是將整行讀入字符串緩衝區,並自己查找(一些)分隔符。假設類似的例子中,只有第一列包含空格,你可以做這樣的:

program test 
    implicit none 

    character(1024) :: buffer 
    character(20) :: var1 
    integer :: pos, var2 
    real :: var3, var4 

    read(*,"(A)") buffer 
    pos = index(buffer, ",") 
    var1 = buffer(1:pos-1) 
    read(buffer(pos+1:), *) var2, var3, var4 
    print *, var1, var2, var3, var4 

end program test 

這樣,您以後它分割手動字符串這是由空間影響的那部分,以及其他一切您通過read聲明方便地閱讀。如果不只是第一個,也包含其他字段可以包含空格,那麼很容易擴展上面的例子,通過index()函數在緩衝區中查找所有必要的分隔符。

相關問題