如果要從用戶讀取的字符串包含空格,在Fortran中使用讀取(星號,星號)似乎不起作用。 考慮下面的代碼:在Fortran中讀取帶空格的字符串
character(Len = 1000) :: input = ' '
read(*,*) input
如果用戶輸入字符串「你好,我的名字是張三」,只有「你好」,將存儲在輸入;在空間之後的一切都被忽視了。我的假設是,編譯器假定「你好」是第一個參數,而「我的」是第二個,爲了捕獲其他單詞,我們必須使用類似read(,)的input1,input2 ,input3 ...等。這種方法的問題是我們需要爲每個輸入創建大字符數組,並且需要確切地知道將輸入多少個單詞。有沒有辦法解決??一些函數會實際讀取整個句子,空格和全部?非常感謝!
read(*,a)不是有效的語法...格式說明符應該在括號和引號,read(*,'(a)')中,或格式語句中,並通過行號引用。 – 2011-06-12 04:13:34
你是對的。我更新了我的答案。謝謝。 – 2011-06-12 16:00:25
我還要指出,Fortran中的格式說明符與C中的'sscanf'不完全相同。在某些方面它非常相似,但它通常會查找它不同。你可以在這裏找到體面的概述(http://www.oc.nps.edu/~bird/oc3030_online/fortran/io/io.html)或[here](http://www.cs.mtu.edu) /~shene/COURSES/cs201/NOTES/chap05/format.html)。 – jvriesem 2014-08-14 18:06:26