C语言——操作文件夹和文件

文件夹——_mkdir()

 1 #include <stdio.h>
 2 #include <io.h>
 3 #include <direct.h>
 4  
 5 /**
 6 * int _access(const char *path,int mode);
 7 * int _waccess(const wchar_t *path,int mode);
 8 * path:        文件路径        字符型字符串||宽字符型字符串
 9 * mode:        0                检查文件是否存在
10 *            1                检查文件是否可运行
11 *            2                检查文件是否可写
12 *            4                检查文件是否可读
13 *            6                检查文件是否可读&&可写
14 * return:                    是:0        否:-1
15 */
16 /**
17 * int _mkdir(char const* _Path);
18 * _Path:    文件路径        字符型字符串
19 * return:                    成功:0        失败:-1
20 */
21  
22 /// <summary>
23 /// 创建文件夹
24 /// </summary>
25 /// <param name="filePath"></文件夹目录>
26 /// <param name="dirName"></文件夹名称>
27 /// <returns></0成功 || -1错误>
28 int makeDir(const char* filePath, const char* dirName)
29 {
30     char overallName[40] = { 0 };
31     int mkDirReturn = 0;
32     //字符串拼接
33     sprintf_s(overallName, "%s%s", filePath, dirName);
34     if (_access_s(overallName, 0))
35     {
36         mkDirReturn = _mkdir(overallName);
37     }
38     return mkDirReturn;
39 }

文件——fopen_s()

 1 #include <stdio.h>
 2  
 3 /**
 4 * errno_t fopen_s( FILE** _Stream, char const* _FileName, char const* _Mode);
 5 * _Stream:        文件描述符的指针的指针
 6 * _FileName:    文件名(应包含文件路径)
 7 * _Mode:        打开模式
 8 * errno_t:        成功:0        失败:-1
 9 * 
10 * _Mode:
11 *                  字符                含义
12                  "r"           只读
13                  "w"           覆盖写(可创建文件)
14                  "a"           追加写、读(可创建文件)
15                  "r+"          创建或读
16                  "w+"          创建或覆盖写(可创建文件)
17                  "a+"          创建或追加写、读(可创建文件)
18                  "b"           二进制文件(用法:wb、rb、W+b)
19    有些文件数据中含有文件结束符(未到文件结尾),使用二进制形式打开就可以正常读到文件结尾
20 */
21  
22 /// <summary>
23 /// 创建文件
24 /// </summary>
25 /// <param name="filePath"></文件路径>
26 /// <param name="fileNmme"></文件名>
27 /// <param name="mode"></打开文件模式>
28 /// <returns></0成功 || -1错误>
29 FILE* makeFile(const char* filePath, const char* fileNmme, const char* mode)
30 {
31     FILE* fp;
32     char overallName[40] = { 0 };
33     sprintf_s(overallName, "%s%s", filePath, fileNmme);
34     //fopen是用户态文件IO,open是内核态文件IO;
35     //open离系统内核更近(更低级)fopen可移植性更好;
36     //fopen_s是安全性更高的fopen.
37     fopen_s(&fp, overallName, mode);
38     //fp非空
39     if (fp)
40     {
41         fclose(fp);
42     }    
43     return fp;
44 }

注:使用时形参列表、fclose()、sprintf_s()等可以灵活改动

posted on 2023-03-05 12:50  _燃灯续昼  阅读(43)  评论(0编辑  收藏  举报

导航