看板 Fortran 關於我們 聯絡資訊
※ 引述《psallen (psallen)》之銘言: : 小弟是fortran新手,最近在看一段程式碼要將其改成c語言, : 但目前有一段一直看不懂想請教版上的高手能否幫忙看看, : 感激不盡! : 擷取片段程式碼如下: : PARAMETER (M1=18,N1=2**M1) : implicit real*8 (a-h,o-z) : parameter (mtot=1000000) : REAL*8 X(mtot),vvz(mtot,6),xout(mtot,6),xx(n1),xall(n1,6) : complex*16 xfl(n1) : c** : c** nn=number of input responses : c** T=period : c** : write(*,*) ' [1]dt (in inp1) [2] Nterms (1-6) [3] M (13=16s)' : read (*,*) edt,nterm,M read的( )內第一個位置指的是讀取位置,*表示從螢幕輸入讀取 第二個位置指的是讀取格式,*表示自由格式,上行write也是如此 : N=2**M : if (edt>10.0) edt=1.0/edt : do i=1,mtot : read (1,*,iostat=kk) ajj,(vvz(i,j),j=1,nterm) 上行read說要從編號為1的檔案中讀取,不曉得前面是否有open(1,...)的 程式碼? 然後使用自由格式讀取,iostat是指當讀資料沒問題時為0,如 果讀取過程有問題通常是-1 : if (kk.ne.0) exit 上行指如果讀取有問題就跳出迴圈,也可使用在資料結束的時候跳出迴圈 : enddo : write(*,*) ' dt=',edt : 看不懂的地方是倒數第四行read那行代表的意思? : 因為我執行過第一次的write和read會顯示出來,而第四行的read卻不會顯示出來 第四行read不是從螢幕讀取,所以不會顯示 : 要我輸入東西,之前留下的執行檔事會在我輸入完edt,nterm,M的值時要我輸入input檔, : 但我擷取出來這段產生的執行檔卻輸入完edt,nterm,M的值時就跳到最後一個write了, : 麻煩大家了 : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.36.198
psallen:感謝mo大的回答,有稍微懂了 02/15 11:50
psallen:read (1,*,iostat=kk)這行原程式碼前面並沒有open(1,...) 02/15 11:52
psallen:的指令,但我拿之前此程式的執行檔執行時,在我輸入完 02/15 11:53
psallen:edt,nterm,M這三個值時,dosbox會顯示一行 02/15 11:54
psallen:File name missing or blank-please enter file name 02/15 11:55
psallen:然後我就在這行出現後輸入我的input檔就可以繼續運作 02/15 11:55
psallen:但我這次重新編譯程式碼時卻不會出現File missing這個提示 02/15 11:56
psallen:不知道是哪邊出了問題,可以請mo大在幫我看看嗎?謝謝 02/15 11:57
psallen:有辦法變成之前這樣在螢幕上輸入INPUT檔名嗎? 02/15 12:18
mouseforlove:請問你重新編譯的時候,有修改什麼內容嗎? 02/15 14:30
psallen: 不好意思這我也不知道,因為我以前都一直用exe檔做運算而 02/15 16:19
psallen:已,程式碼是人編寫的,所以也不太清楚是否有改過 02/15 16:20
mouseforlove:這樣我不確定是不是程式裡面有給資料的檔名了... 02/15 17:12
psallen:好那我再研究看看 謝謝 02/16 10:24