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

文件夹——_mkdir()

#include <stdio.h>
#include <io.h>
#include <direct.h>

/**
* int _access(const char *path,int mode);
* int _waccess(const wchar_t *path,int mode);
* path:        文件路径        字符型字符串||宽字符型字符串
* mode:        0                检查文件是否存在
*            1                检查文件是否可运行
*            2                检查文件是否可写
*            4                检查文件是否可读
*            6                检查文件是否可读&&可写
* return:                    是:0        否:-1
*/
/**
* int _mkdir(char const* _Path);
* _Path:    文件路径        字符型字符串
* return:                    成功:0        失败:-1
*/

/// <summary>
/// 创建文件夹
/// </summary>
/// <param name="filePath"></文件夹目录>
/// <param name="dirName"></文件夹名称>
/// <returns></0成功 || -1错误>
int makeDir(const char* filePath, const char* dirName)
{
    char overallName[40] = { 0 };
    int mkDirReturn = 0;
    //字符串拼接
    sprintf_s(overallName, "%s%s", filePath, dirName);
    if (_access_s(overallName, 0))
    {
        mkDirReturn = _mkdir(overallName);
    }
    return mkDirReturn;
}

文件——fopen_s()

#include <stdio.h>

/**
* errno_t fopen_s( FILE** _Stream, char const* _FileName, char const* _Mode);
* _Stream:        文件描述符的指针的指针
* _FileName:    文件名(应包含文件路径)
* _Mode:        打开模式
* errno_t:        成功:0        失败:-1
* 
* _Mode:
*                  字符                含义
                 "r"           只读
                 "w"           覆盖写(可创建文件)
                 "a"           追加写、读(可创建文件)
                 "r+"          创建或读
                 "w+"          创建或覆盖写(可创建文件)
                 "a+"          创建或追加写、读(可创建文件)
                 "b"           二进制文件(用法:wb、rb、W+b)
   有些文件数据中含有文件结束符(未到文件结尾),使用二进制形式打开就可以正常读到文件结尾
*/

/// <summary>
/// 创建文件
/// </summary>
/// <param name="filePath"></文件路径>
/// <param name="fileNmme"></文件名>
/// <param name="mode"></打开文件模式>
/// <returns></0成功 || -1错误>
FILE* makeFile(const char* filePath, const char* fileNmme, const char* mode)
{
    FILE* fp;
    char overallName[40] = { 0 };
    sprintf_s(overallName, "%s%s", filePath, fileNmme);
    //fopen是用户态文件IO,open是内核态文件IO;
    //open离系统内核更近(更低级)fopen可移植性更好;
    //fopen_s是安全性更高的fopen.
    fopen_s(&fp, overallName, mode);
    //fp非空
    if (fp)
    {
        fclose(fp);
    }    
    return fp;
}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值