C语言函数大全-- _w 开头的函数(1)


本篇介绍C语言函数大全-- _w 开头的函数(1)

1. _waccess

1.1 函数说明

函数声明函数功能
int _waccess(const wchar_t* path, int mode);用于测试文件或目录是否存在,并检查程序是否具有对它们的访问权限

参数:

  • path : 待测试的文件名或目录名的宽字符字符串
  • mode : 一个位掩码,用于指示要测试的访问权限;常见的访问权限如下:
    • R_OK:可读取权限
    • W_OK:可写入权限
    • X_OK:可执行权限
    • F_OK:存在性检查权限

1.2 演示示例

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

int main() 
{
    // 测试文件是否存在
    const wchar_t* filename = L"test.txt";
    // 第二个参数 mode = 0,表示不指定任何访问权限 
    if (_waccess(filename, 0) != 0) 
    {
        fprintf(stderr, "File does not exist.\n");
        return 1;
    }

    printf("File exists.\n");

    return 0;
}

在上述的示例代码中,我们使用 _waccess() 函数测试文件是否存在。如果文件不存在,则输出一个错误信息并返回 1;否则输出一个成功信息并返回 0

注意: 第二个参数设置为 0,表示不指定任何访问权限。

如果要测试一个文件是否存在并且具有可读取和可写入权限,可以将第二个参数设置为 R_OK | W_OK,如下所示:

_waccess("filename", R_OK | W_OK);

1.3 运行结果

在这里插入图片描述

2. _wasctime

2.1 函数说明

函数声明函数功能
wchar_t* _wasctime(const struct tm* timeptr);用于将 tm 结构体类型的时间转换为字符串

参数:

  • timeptr : 要转换为字符串的 tm 结构体类型变量

2.2 演示示例

#include <stdio.h>
#include <time.h>
#include <wchar.h>

int main() 
{
    // 获取当前时间
    time_t now = time(NULL);
    struct tm* ptm = localtime(&now);

    // 将时间转换为字符串
    wchar_t* str = _wasctime(ptm);

    // 输出结果:类似 Mon May 15 15:10:55 2023\n
    wprintf(L"%ls", str);

    return 0;
}

在上面的示例代码中,

  • 首先,我们使用 time() 函数获取当前时间;
  • 接着,使用 localtime() 函数将其转换为本地时间;
  • 然后,使用 _wasctime() 函数将转换后的时间格式化为一个字符串;
  • 最后,输出转换后的时间字符串。

2.3 运行结果

在这里插入图片描述

3. _wasctime_s

3.1 函数说明

函数声明函数功能
errno_t _wasctime_s(wchar_t* buffer, size_t bufsz, const struct tm* timeptr);用于将 tm 结构体类型的时间转换为字符串

参数:

  • buffer : 指向一个 wchar_t 类型的缓冲区,该缓冲区存储函数将时间格式化后的结果
  • bufsz : 缓冲区的大小,以字节为单位
  • timeptr : 一个指向 tm 结构体的指针,其中包含要转换为字符串的时间信息

3.2 演示示例

#include <stdio.h>
#include <time.h>
#include <wchar.h>

int main() 
{
    // 获取当前时间
    time_t now = time(NULL);
    struct tm* ptm = localtime(&now);

    // 创建目标缓冲区
    wchar_t buffer[32];

    // 将时间转换为字符串
    errno_t err = _wasctime_s(buffer, sizeof(buffer), ptm);

    // 检查转换是否成功
    if (err == 0) 
    {
        // 输出结果:类似 Sun May 15 12:34:56 2023\n
        wprintf(L"%ls", buffer);
    } 
    else 
    {
        // 输出错误信息
        fprintf(stderr, "Error converting time to string. Error code: %d\n", err);
    }

    return 0;
}

在上面的示例代码中,

  • 首先,我们使用 time() 函数获取当前时间;
  • 接着,使用 localtime() 函数将其转换为本地时间;
  • 然后,创建一个目标缓冲区,并使用 _wasctime_s() 函数将转换后的时间格式化为一个字符串;
  • 最后,输出转换后的时间字符串。

3.3 运行结果

在这里插入图片描述

4. _wchdir

4.1 函数说明

函数声明函数功能
int _wchdir(const wchar_t* path);用于更改当前工作目录

参数:

  • path: 新工作目录路径的宽字符字符串

4.2 演示示例

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

#define MAX_PATH 200

int main() 
{
    // 输出当前工作目录
    wchar_t buffer[MAX_PATH];
    _wgetcwd(buffer, MAX_PATH);
    wprintf(L"Current working directory: %ls\n", buffer);

    // 更改当前工作目录
    const wchar_t* new_dir = L"C:\\Windows\\system32";
    if (_wchdir(new_dir) == 0) 
        wprintf(L"Changed working directory to: %ls\n", new_dir);
    else 
        fprintf(stderr, "Error changing working directory.\n");

    return 0;
}

在上面的示例代码中,

  • 首先,我们使用 _wgetcwd() 函数获取当前工作目录;
  • 接着,调用 wprintf() 函数将当前工作目录输出到控制台;
  • 然后,使用 _wchdir() 函数将当前工作目录更改为 C:\Windows\system32
  • 最后,将更改的目录输出到控制台中。

4.3 运行结果

在这里插入图片描述

5. _wchmod

5.1 函数说明

函数声明函数功能
int _wchmod(const wchar_t* path, int mode);用于更改指定文件的访问权限

参数:

  • path : 一个指向 wchar_t 类型的字符串,表示要更改权限的文件路径
  • mode : 新的访问权限模式,可以是以下常量之一或其组合:
    • _S_IREAD:所有用户可读取文件
    • _S_IWRITE:所有用户可写入文件
    • _S_IEXEC:所有用户可执行文件
    • _S_IRUSR:文件所有者可读取文件
    • _S_IWUSR:文件所有者可写入文件
    • _S_IXUSR:文件所有者可执行文件
    • _S_IRGRP:文件组成员可读取文件
    • _S_IWGRP:文件组成员可写入文件
    • _S_IXGRP:文件组成员可执行文件
    • _S_IROTH:其他用户可读取文件
    • _S_IWOTH:其他用户可写入文件
    • _S_IXOTH:其他用户可执行文件

5.2 演示示例

#include <sys/stat.h>
#include <stdio.h>
#include <io.h>

int main() 
{
    // 更改文件的访问权限
    const wchar_t* filename = L"test.txt";
    int result = _wchmod(filename, _S_IREAD | _S_IWRITE);

    if (result) {
        fprintf(stderr, "Error changing file permission.\n");
        return 1;
    }

    printf("File permission changed successfully.\n");

    return 0;
}

5.3 运行结果

在这里插入图片描述

6. _wcreat

6.1 函数说明

函数声明函数功能
int _wcreat(const wchar_t* path, int mode);用于创建一个新文件,并返回一个文件指针

参数:

  • path : 一个指向 wchar_t 类型的字符串,表示要创建的文件路径名
  • mode : 要打开文件的方式,可以是以下常量之一或其组合:
    • _S_IREAD:所有用户可读取文件
    • _S_IWRITE:所有用户可写入文件
    • _S_IEXEC:所有用户可执行文件
    • _S_IRUSR:文件所有者可读取文件
    • _S_IWUSR:文件所有者可写入文件
    • _S_IXUSR:文件所有者可执行文件
    • _S_IRGRP:文件组成员可读取文件
    • _S_IWGRP:文件组成员可写入文件
    • _S_IXGRP:文件组成员可执行文件
    • _S_IROTH:其他用户可读取文件
    • _S_IWOTH:其他用户可写入文件
    • _S_IXOTH:其他用户可执行文件

注意: mode 参数中的这些常量可以用位运算符 | 进行组合,以指定文件的不同访问权限。

6.2 演示示例

#include <sys/stat.h>
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <wchar.h>

int main() 
{
    // 打开新创建的文件
    const wchar_t* filename = L"example.txt";
    int file_handle = _wcreat(filename, _S_IWRITE);

    if (file_handle == -1) 
    {
        fprintf(stderr, "Error creating file.\n");
        return 1;
    }

    // 写入数据到文件
    const wchar_t* message = L"Hello, huazie!\n";
    const size_t num_bytes = wcslen(message) * sizeof(wchar_t);
    const ssize_t bytes_written = _write(file_handle, message, num_bytes);

    if (bytes_written == -1) 
    {
        fprintf(stderr, "Error writing to file.\n");
        return 1;
    }

    // 输出结果
    wprintf(L"%zd bytes written to file.\n", bytes_written);

    // 关闭文件句柄
    _close(file_handle);

    return 0;
}

在上述的示例代码中,

  • 首先,我们使用 _wcreat() 函数创建一个名为 "example.txt" 的新文本文件,并将其存储在当前目录中;
  • 接着,定义一个宽字符指针 message,其值为"Hello, huazie!\n",同时使用了 wcslen() 函数来计算字符串的长度,并乘以 sizeof(wchar_t) 来计算实际的字节数
  • 然后,调用 _write() 函数将数据以字节形式写入先前创建的 "example.txt" 文件。根据返回值 bytes_written ,检查是否成功。如果函数执行成功,则输出写入的字节数;否则输出一个错误信息。
  • 最后,关闭文件句柄,结束程序。

注意:_write() 函数是 Windows 平台和 Linux 平台均可用的函数,但在使用时需要注意不同平台上换行符的差异。在 Windows 平台上,文本文件中的换行符是 "\r\n",而在 Linux 平台上则是 "\n"

6.3 运行结果

在这里插入图片描述

在这里插入图片描述

7. _wcserror

7.1 函数说明

函数声明函数功能
wchar_t* _wcserror(int errnum);用于将系统错误代码(例如通过 _wopen()_wsopen()_wexec() 等函数返回的错误代码)转换为对应的错误消息字符串

参数:

  • errnum : 要转换的错误代码。如果传递 0,则函数返回一个表示 “no error” 的字符串

7.2 演示示例

#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <errno.h>
#include <wchar.h>

int main() 
{
    // 尝试打开不存在的文件
    const wchar_t* filename = L"nonexistent.txt";
    int file_handle = _wopen(filename, _O_RDONLY);

    if (file_handle == -1) 
    {
        // 获取最后发生的系统错误代码
        const int error_code = errno;

        // 将错误代码转换为错误消息字符串
        const wchar_t* error_message = _wcserror(error_code);

        // 输出错误消息字符串
        fwprintf(stderr, L"Error opening file: %s\n", error_message);
        return 1;
    }

    // 因为文件不存在,所以走不到这里
    printf("File opened successfully.\n");

    // 关闭文件句柄
    _close(file_handle);

    return 0;
}

在上述的示例代码中,

  • 首先,我们使用 _wopen() 函数尝试打开一个不存在的文件。
  • 接着,如果函数执行失败,则获取最后发生的系统错误代码 errno
  • 然后,使用 _wcserror() 函数将其转换为对应的错误消息字符串。
  • 最后,使用 fwprintf() 函数输出错误消息字符串并返回 1,结束程序;

7.3 运行结果

在这里插入图片描述

8. _wctime

8.1 函数说明

函数声明函数功能
wchar_t* _wctime(const time_t* _Time);用于将时间转换为可读格式的、宽字符字符串

参数:

  • _Time : 要转换为可读格式字符串的时间值,通常使用 time() 函数获取当前时间值

8.2 演示示例

#include <stdio.h>
#include <time.h>

int main() 
{
    // 获取当前时间
    const time_t now = time(NULL);

    // 将时间转换为可读格式字符串
    wchar_t* str_time = _wctime(&now);

    // 输出当前时间的字符串
    wprintf(L"The current date and time is: %s", asctime(localtime(&now)));
    wprintf(L"_wctime() output: %ls", str_time);

    return 0;
}

8.3 运行结果

在这里插入图片描述

9. _wfullpath

9.1 函数说明

函数声明函数功能
wchar_t *_wfullpath(wchar_t *absPath, const wchar_t *relPath, size_t maxLength);用于将相对路径转换为绝对路径

参数:

  • absPath : 用于存储返回结果的缓冲区指针
  • relPath : 待转换的相对路径字符串
  • maxLength : 缓冲区最大长度

返回值:

  • 如果转换成功,则返回转换后的绝对路径;
  • 如果发生错误,则返回 NULL

9.2 演示示例

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>

int main() 
{
    // 相对路径
    const wchar_t* rel_path = L"../test/file.txt";

    // 分配缓冲区空间
    wchar_t abs_path[1024];

    // 将相对路径转换为绝对路径
    if (_wfullpath(abs_path, rel_path, sizeof(abs_path) / sizeof(wchar_t)) != NULL) 
    {
        wprintf(L"Absolute path: %ls\n", abs_path);
    } 
    else 
    {
        printf("Error converting relative path to absolute path.\n");
        return 1;
    }

    return 0;
}

9.3 运行结果

在这里插入图片描述

10. _wmakepath

10.1 函数说明

函数声明函数功能
void _wmakepath(wchar_t* path, const wchar_t* drive, const wchar_t* dir, const wchar_t* fname, const wchar_t* ext);用于将文件路径的各个部分(驱动器、目录、文件名和扩展名)组合成完整路径

参数:

  • path : 指向存储生成的完整文件路径字符串的缓冲区的指针
  • drive : 指定驱动器的字符串,例如 "C:"。如果不需要指定驱动器,则将此参数设置为 NULL
  • dir : 指定目录路径的字符串,以反斜杠 (\) 结尾。可以使用正斜杠 (/) 作为替代字符。如果不需要指定目录路径,则将此参数设置为 NULL
  • fname : 指定文件名的字符串(不包括扩展名)。如果不需要指定文件名,则将此参数设置为 NULL
  • ext : 指定文件扩展名的字符串,包括点 (.)。如果不需要指定文件扩展名,则将此参数设置为 NULL

10.2 演示示例

#include <stdio.h>
#include <wchar.h>

#define MAX_PATH 300

int main() 
{
    // 定义文件路径各部分
    const wchar_t* drive = L"E:";
    const wchar_t* dir = L"\\Software\\C\\Demo\\C";
    const wchar_t* fname = L"Test2";
    const wchar_t* ext = L".exe";

    // 分配缓冲区空间并组合路径
    wchar_t path[MAX_PATH];
    // 将文件路径的各个部分(驱动器、目录、文件名和扩展名)组合成完整路径
    _wmakepath(path, drive, dir, fname, ext);

    // 输组合后的路径
    wprintf(L"Path: %ls\n", path);

    return 0;
}

10.3 运行结果

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huazie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值