2015-08-24 42 views
-2

我已經面臨將Fortran 77程序移植到C#中的挑戰。 我發現從標準輸入(即鍵盤)讀取(5,*)。Fortran77中的標準輸入和命令行文件

現在我想了解以下工作:

1.當我運行該程序,我要運行它作爲cheeseCalc<blue.dat>output.txt ,上面寫着一個blue.dat文件,併產生一個輸出。 txt文件。在這種情況下閱讀是如何工作的?

  1. 在同一個程序中,有READ(5,*)IDUM,後來它也有read(5,*)idum,idum,tinit。這種情況發生了什麼?

的blue.dat文件有以下幾行:

HEAD make new cake 
INPUT VARIABLES 
MFED MASS-FEED 30   ;1001 1 100 PEOPLE TO FEED 
TOVE TEMP-IN-OVEN 150.0   ;1001 20 100 TEMPERATURE OF OVEN, C 

修訂:僅適用於上下文,代碼在該程序的初始行是:

 program cheeseCalc 
     CHARACTER*76 IDENT 
     CHARACTER*1 IDUM 
     READ(5,104)IDENT 
104 FORMAT(4X,A) 
     READ(5,*)IDUM 
c  write start record 
     write(6,102)IDENT 
102 format('**START',/,4X,A,/) 
     read(5,*)idum,idum,frate 
110 format(f10.0) 
     frate2=frate/3.6 
     read(5,*)idum,idum,tempo 
     * Do calculation * 
     write(6,*)frate2,tempo 
     end 

任何幫助將不勝感激!謝謝!

+2

您應該顯示一段代碼,其中顯示所有讀取語句的順序以及所有正在讀取的變量的聲明。 –

+5

對於(1),注意你的程序沒有對命令行做任何事情:文件的內容將從標準輸入讀取。除此之外,我認爲read語句最基本的地方是教科書/教程,而不是SO Q&A。 – francescalus

+0

謝謝@francescalus。就像我剛纔提到的,我確實閱讀了有關READ(*,*)的教程,但仍然無法找出問題2.任何有關此問題的意見或建議都會很棒。 – rkc88

回答

2

一般read聲明的完整細節在其他地方有記載,但這裏有一個習語也許值得詳細說明。

語句read(5,*) ...是來自外部單元號5的按列表指示的輸入。讓我們假設(這並不是保證,但它很可能並且對於您的設置似乎很滿意),這個外部單位是標準輸入。

的慣用部分是在輸入列表中的重複使用單個變量如

read(5,*) idum, idum, ... 

這(與事實idum爲(非常命名)長度爲1的字符變量)表示該用戶不關心前兩個字段中的輸入)。讀取由空白分隔的第一個字符串,然後將第一個字符分配給idum。然後idum立即設置爲下一個字符串的第一個字符。

這樣做的目的是將記錄中的位置設置爲第三個字段,該字段讀入(實際)變量frate(在第一種情況下)。

同樣

read(5,*) idum 

只是跳過第二線(嚴格地說,閱讀的第一個字符,但不是下一次讀入idum之前的任何地方使用):第一個空白分隔的字段讀,但下一個閱讀移到下一行,而不是繼續那一行。

+0

謝謝@francescalus的答案。看起來我有很多工作要做! – rkc88

相關問題