iT邦幫忙

0

在VS2017/2019中使用FTN95語言,不能輸入中文

  • 分享至 

  • xImage

我的作業環境是WIN10、64位元

下載的軟體是Visual Studio 2019

使用的語言是Fortran95 (FTN95)

輸入英文是沒問題的,但有時候會需要將結果輸出,因此會需要用到中文

例如: write(,)"水位"

當輸入中文的那瞬間(按Enter時),就會跳出以下訊息

Microsoft Visual C++ Runtime Library

Debug Assertion Failed!

Program:C:\Program Files (x86)\Silverfrost\Silverfrost FTN95 for Visual Studio\Ftn95Prj.dll

File: minkernel\crts\ucrt\src\appcrt\convert\isctype.cpp

Line: 36 按略過後跳出 Line: 42

Expression:c>=-1&&c<=255

For information on how your program can cause an assertion failure. see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

接著不管按中止還是重試都會直接跳掉

希望有人可以幫我解答這個問題。感謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

5
一級屠豬士
iT邦大師 1 級 ‧ 2022-04-13 18:45:30

關於你這個問題,是因為 Fortran 是早期發展的語言,雖然現在的Fortran也有些加強,
但是很多是歷史發展的慣性.
先來看你使用Visual Studio 2019 回報的錯誤訊息:Expression:c>=-1&&c<=255
可以參考以下
https://stackoverflow.com/questions/62592717/getting-error-debug-assertion-failed-expression-c-1-c-255
這裡也有跟你類似的情況,簡單說就是輸入時判斷是否有不是 ASCII Code的.
我們也可以觀察到你是使用 Silverfrost FTN95,查看他的文件:
https://www.silverfrost.com/ftn95-help/plato/unicode.aspx
裡面有提到 Note, however, that FTN95 can only compile standard ASCII files.

雖然可以處理 Unicode 的檔案,例如open,但是程式碼本身要使用 ASCII,
所以Visual Studio才會去做上述的檢查動作.

至於現代的Fortran 使用unicode的部分可以參考
https://cyber.dabamos.de/programming/modernfortran/unicode.html

是使用輸出編碼的方式來達成,所以你要稍微變動一下,改成不是直接打"水位".

看更多先前的回應...收起先前的回應...

福傳也難不倒
/images/emoticon/emoticon32.gif

尼克 iT邦大師 1 級 ‧ 2022-04-14 08:21:05 檢舉

福傳/浮船?我笑而不語

我想請問關於第一段傳的網址
https://stackoverflow.com/questions/62592717/getting-error-debug-assertion-failed-expression-c-1-c-255
文章內容有跟我類似的情形
要如何更改為unsigned char使回傳值介於-1~255

不知道你現在這個問題是要做什麼? 要解決什麼問題?
你現在遇到的是 Visual Studio幫你做檢查時遇到非 ASCII Code,
然後出現問題.
你其實就用英文列印出來就好了.
在目前許多的應用,Fortran負責做運算,與其他程式協同運作,
可能是透過檔案來交換資料,由其他程式做輸入的檢查控制等等,
Fortran程式讀取檔案,計算後寫到檔案,再由其他程式來做後續的顯示或者是繪圖等等.

我們教授要求用中文把結果輸出出來
因為教授說以前可以,怎麼到這屆就不行
以前的學長我也問過,他們也不知道為什麼會這樣
要解決的問題是,OPEN一個文件
將計算完的水位、流量資料等等的數據
寫入TXT文件檔
寫入要用中文,例如水位、流量等等
但只要在VS2017/2019裡面輸入中文的那一瞬間
就會跳出...
https://ithelp.ithome.com.tw/upload/images/20220418/20148225taeKvr8iaK.jpg
我在網路上查到的原因大概是因為char的緣故
但我也不是很懂
也不知道怎麼設為unsigned char
我是參考以下這篇文章
https://blog.csdn.net/chinaryan/article/details/91839813

不是設成 unsigned char, 原因都跟你說啦,要看懂.
有看到我第三篇的嗎?那裡已經有範例了.

https://fortranwiki.org/fortran/files/character_handling_in_Fortran.html

這是 gfortran的
https://gcc.gnu.org/onlinedocs/gcc-4.7.4/gfortran/SELECTED_005fCHAR_005fKIND.html

先把 unicode 的列印出來.
不然你就用一個其他編輯器,不要用 visual studio.

因為那段列印就是不參與計算,所以直接寫出.以前版本的 visual studio 不做那個檢查,你用了新版的,他就做檢查,然後當機.
你就換一個,然後編譯去跑.

我要發表回答

立即登入回答