文件相关操作
_fsope和_wfsopen
【函数原型】
FILE *_fsopen(
const char *filename,
const char *mode,
int shflag
);
FILE *_wfsopen(
const wchar_t *filename,
const wchar_t *mode,
int shflag
);
注: _wfsopen 是 _fsopen 的宽字符版本,其他没有什么不同
【参数】
filename
要打开的文件的名称。
mode
允许的访问类型。
shflag
允许的共享类型。
【返回值】
这些函数均返回指向流的指针。 一个 null 指针值指示错误。 如果 filename 或 mode 是 NULL 指针或空字符串,这些函数将调用无效的参数处理程序
【说明】
_fsopen 函数以流的形式打开由 filename 指定的文件并使该文件做好准备以进行后续的共享读写,如模式和 shflag 参数所定义。 _wfsopen 是 _fsopen 的宽字符版本;_wfsopen 的 filename 和 mode 参数是宽字符串。 除此以外,_wfsopen 和 _fsopen 的行为完全相同
参数mode说明
“r”
打开以便读取。 如果文件不存在或找不到,_fsopen 调用将失败;“w”
打开用于写入的空文件。 如果给定文件存在,则其内容会被销毁;“a”
打开以便在文件末尾进行写入(追加);如果文件不存在,则首先创建它;“r+”
打开以便读取和写入。 (该文件必须存在);“w+”
打开用于读取和写入的空文件。 如果给定文件存在,则其内容会被销毁;“a+”
打开以便进行读取和追加;如果文件不存在,则首先创建它;
使用 “w” 和 “w+” 类型时要小心,因为它们可能会破坏现有文件。
使用 “a” 或 “a+” 访问类型打开文件时,所有写入操作均将在文件末尾进行。 使用 fseek 或 rewind 可重新定位文件指针,但在执行任何写入操作前,文件指针将始终被移回文件末尾。 因此,无法覆盖现有数据。 指定 “r+”、”w+” 或 “a+” 访问类型时,允许读取和写入(文件将处于打开状态以进行更新)。 但是,在读取与写入之间切换时,必须有中间 fsetpos、fseek 或 rewind 操作。 如果需要的话,可以为 fsetpos 或 fseek 操作指定当前位置
mode后还可以追加以下模式:
- “t”
在文本(转换)模式下打开文件。 在这种模式下,输入时,回车换行 (CR-LF) 组合将转换为单一的换行 (LF);输出时,LF字符将转换为 CR-LF 组合。 CTRL+Z 也将在输入时解释为文件尾字符。 在打开以进行读取或读取/写入的文件中,_fsopen将检查文件末尾的 Ctrl+Z 并在可能的情况下将其移除。 这是因为使用 fseek 和 ftell 在以 CTRL+Z结尾的文件中移动