亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您好,想求助下關于函數 _wfopen_s()問題 ?

您好,想求助下關于函數 _wfopen_s()問題 ?

喵喔喔 2022-02-25 15:53:37
請問該函數,前面的前綴 _w 和后綴 _s 表示什么???為什么要加上這兩個東西?加上這兩個后,和 函數 fopen( ) 有什么不同了?
查看完整描述

2 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

兩個申明如下:
errno_t fopen_s(
FILE** pFile,
const char *filename,
const char *mode
);
errno_t _wfopen_s(
FILE** pFile,
const wchar_t *filename,
const wchar_t *mode
);
函數參數和返回值
[輸出] pFile (FILE*)指針 [輸入] filename 文件名(可以加文件路徑) [輸入] mode 訪問方式。 --------------------------------------------------- 返回值: 如果成功返回0,失敗則返回相應的錯誤代碼。 錯誤代碼請到_doserrno,errno, _sys_errlist, and _sys_nerr去了解更多 錯誤條件 pFile filename mode 返回值 pFile的內容
NULL 任何 任何 EINVAL 沒有改變
任何 NULL 任何 EINVAL 沒有改變
任何 任何 NULL EINVAL 沒有改變
EINVAL:無效的參數。 備注: 文件由fopen_s和_wfopen_s打開不能共享。(也就是別人無法讀/寫和訪問)如果你確實想讓他可以訪問, use _fsopen,_wfsopen withthe appropriate sharing mode constant (例如, _SH_DENYNOfor read/write sharing). ……
編輯本段文件訪問方式
"r" 只讀,若文件不在則出錯。 "w" 打開一個空文件來編寫。若文件已經存在,內容會被全部清空;若文件不在則創建。(不可以創建文件夾)。 "a" 若文件存在就在文件末尾追加字符(也就是把光標移動到文件的EOF處),若文件不在就創建。 EOF:結束標志 "r+" 讀/寫,都可以。文件必須存在。 "w+" 就是"W"再多一個閱讀的權力。也清空內容。 "a+" 讀/寫,并且把光標移動到EOF處。 當使用”a”和”a+”來打開一個文件時,光標會自動移動到EOF處,如果需要定位光標,則需要用到fseek 或者 rewind 函數。



查看完整回答
反對 回復 2022-02-27
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

_wfopen_s()不是標準C里的函數,只能在windows上用,Linux下沒有這個函數。
fopen()你應該很清楚了,就是你傳入一個文件名和讀寫模式,然后它就給你一個FILE*句柄。文件名是char *類型的。
_wfopen_s()跟fopen()有兩點區別:
1. _w表示傳入的參數是wchar_t *類型的。就是說,你必須傳入unicode字符串。在中文操作系統里,日文,韓文或者泰文等非拉丁語系的文字,如果用普通字符串表示,可能會顯示成亂碼,這個時候你用fopen()函數就沒法打開指定的文件。反之,中文在其他語言的操作系統里也有一樣問題。而unicode就沒有這個問題,所以最好用_w版本的fopen。
2. _s表示該函數是線程安全的。就是說fopen()是非線程安全的,而_wfopen_s()是線程安全的。關于線程安全的定義,你自己用搜索引擎搜一下就知道了。



查看完整回答
反對 回復 2022-02-27
  • 2 回答
  • 0 關注
  • 604 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號