为了账号安全,请及时绑定邮箱和手机立即绑定

您好,想求助下关于函数 _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 关注
  • 620 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号