errno_t open_s()打开文件出现的错误分析
=========================
編譯環境:VS2015
=========================
在vs2015環境下使用fopen方式打開文件會報錯,大概內容是不安全(unsafe)。網上的解決辦法主要分為兩種:第一種是改配置環境:https://jingyan.baidu.com/article/ce436649fd61543773afd32e.html百度經驗上提供的方法。但是經過嘗試,發現這個方法并沒有對我的項目產生影響。所以采用第二種方案,也是微軟推薦使用的方式:使用fopen_s方式。至于該方式的寫法:參考http://blog.sina.com.cn/s/blog_15f359e0b0102wds7.html。
然而我并不是完全按照那個方式來的。
我先定義了一個const類型的變量diskName。然后就直接使用fopen_s。
運行發現不對。errno_t變量err的值是13,這個錯誤類型表示獲取數據不對。
經過多次探索,發現:
fopen_s()函數中,filename最后生成的是const char*類型。所以自己定義的const方式也好,define的也好,在這里都是不正確的。找不到文件。所以不要不要不要在文件名前使用const。
注:fopen_s函數中的三個參數,指的是最后這個函數生成的類型形式(比如說第二個參數:意思是執行完這個函數,最后生成的文件名是const char*類型的),而不是我們要寫入的類型(比如第二個參數:并不是說我們要在第二個參數的位置寫一個const char*類型的變量)。此外,有的函數有很多參數,但是不需要每個都寫。
總結:使用errno_t fopen_s方式打開文件時,文件名不要使用const,直接用char filename[]就好了。
總結
以上是生活随笔為你收集整理的errno_t open_s()打开文件出现的错误分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法训练_ALGO14_回文数
- 下一篇: OS_CORE.C(1)