我的作業環境是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)
接著不管按中止還是重試都會直接跳掉
希望有人可以幫我解答這個問題。感謝
關於你這個問題,是因為 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
是使用輸出編碼的方式來達成,所以你要稍微變動一下,改成不是直接打"水位".
福傳也難不倒
福傳/浮船?我笑而不語
我想請問關於第一段傳的網址
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裡面輸入中文的那一瞬間
就會跳出...
我在網路上查到的原因大概是因為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 不做那個檢查,你用了新版的,他就做檢查,然後當機.
你就換一個,然後編譯去跑.