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

news2024/11/16 18:39:55

C语言函数大全

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

1. _wstrtime

1.1 函数说明

函数声明函数功能
wchar_t *_wstrtime(wchar_t *buffer);用于获取当前系统时间并返回一个宽字符字符串表示,格式为 "HH:MM:SS"(小时:分钟:秒)

参数:

  • buffer : 一个指向 wchar_t 类型数组的指针,用于存储表示当前系统时间的宽字符字符串。如果该参数为 NULL,则 _wstrtime 函数会使用静态内部缓冲区来存储返回的时间字符串。

注意: 在多线程环境下,不应使用静态内部缓冲区,而应将 buffer 参数传递给函数以避免竞争条件。

1.2 演示示例

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

int main() 
{
    // 存储时间字符串的缓冲区
    wchar_t time_buffer[9];   
    // 获取当前时间并存储到缓冲区 
    _wstrtime(time_buffer);    
    // 打印时间字符串到控制台
    wprintf(L"The current time is %ls.\n", time_buffer);    
    return 0;
}

注意: 在不同平台上,本地化设置可能会影响 _wstrtime() 函数的输出格式

1.3 运行结果

在这里插入图片描述

2. _wstrtime_s

2.1 函数说明

函数声明函数功能
errno_t _wstrtime_s(wchar_t *buffer, size_t sizeInWords);用于获取当前系统时间并返回一个宽字符字符串表示,格式为 "HH:MM:SS"(小时:分钟:秒)。相比于 _wstrtime 函数,_wstrtime_s 函数增加了一个额外的参数,用于指定缓冲区的大小,在多线程环境下更加安全可靠

参数:

  • buffer : 一个指向 wchar_t 类型数组的指针,用于存储表示当前系统时间的宽字符字符串。如果该参数为 NULL,则 _wstrtime_s() 函数会使用静态内部缓冲区来存储返回的时间字符串。
  • sizeInWords : 指定了 buffer 缓冲区的大小,以 wchar_t 单位计算。如果 buffer 参数不为 NULL,则应将该参数设置为 buffer 的大小,以确保在写入时间字符串时不会发生缓冲区溢出。

2.2 演示示例

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

int main() 
{
    // 存储时间字符串的缓冲区
    wchar_t time_buffer[9];    
    // 获取当前时间并存储到缓冲区
    errno_t err = _wstrtime_s(time_buffer, sizeof(time_buffer)/sizeof(wchar_t));   
    
    if (err == 0) // 成功获取当前时间
    {
        // 打印时间字符串到控制台
        wprintf(L"The current time is %ls.\n", time_buffer);    
    } 
    else // 获取失败
    {
        fprintf(stderr, "Error getting time: %d\n", err);
    }
    return 0;
}

2.3 运行结果

在这里插入图片描述

3. _wsetlocale

3.1 函数说明

函数声明函数功能
wchar_t* _wsetlocale(int category, const wchar_t* locale);用于设置当前线程的本地化环境

参数:

  • category : 要设置的本地化类别,可以是如下值之一:
    • LC_ALL :设置所有本地化类别
    • LC_COLLATE :设置字符串比较规则类别
    • LC_CTYPE :设置字符分类和转换规则类别
    • LC_MONETARY :设置货币格式类别
    • LC_NUMERIC :设置数字格式类别
    • LC_TIME :设置日期和时间格式类别
  • locale : 一个指向以 null 结尾的宽字符字符串的指针,用于指定要使用的本地化信息。例如,"zh-CN" 可以指定为中国大陆地区的本地化环境。如果该参数为 NULL,则函数会根据系统默认设置来进行本地化。

返回值:

  • 如果设置成功,则返回一个指向以 null 结尾的宽字符字符串的指针,表示当前设置的本地化环境;
  • 如果设置失败,则返回 NULL

3.2 演示示例

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

int main() {
    // 设置本地化环境为系统默认设置
    _wsetlocale(LC_ALL, L"");    
    // 获取当前时间
    time_t now = time(NULL);  
    // 转换为本地时间  
    struct tm* tm_now = localtime(&now);   
    // 存储时间字符串的缓冲区 
    wchar_t time_buffer[64];  
    // 格式化时间字符串  
    wcsftime(time_buffer, sizeof(time_buffer)/sizeof(wchar_t), L"%c", tm_now); 
    // 打印时间字符串到控制台   
    wprintf(L"The current date and time is: %ls.\n", time_buffer);    
    
    return 0;
}

在上面的示例代码中,

  • 首先,我们调用 _wsetlocale() 函数将本地化环境设置为系统默认设置;
  • 接着,使用 time() 函数获取当前时间 now
  • 然后,再使用 localtime() 函数将 now 转换为本地时间;
  • 再接着,定义一个 wchar_t 类型的数组作为存储格式化时间字符串的缓冲区;
  • 再然后,使用 wcsftime() 函数将当前日期和时间格式化为指定的宽字符格式 %c,并将结果存储到缓冲区中;
  • 最后,使用 wprintf() 函数打印格式化后的时间字符串到控制台。

3.3 运行结果

在这里插入图片描述

4. _wtmpnam

4.1 函数说明

函数声明函数功能
wchar_t *_wtmpnam(wchar_t *s);

参数:

  • s : 一个指向 wchar_t 类型字符数组的指针 s,用于存储生成的唯一文件名。该数组必须至少具有 L_tmpnam 个元素

返回值:

  • 如果成功生成临时文件时,则返回指向生成的唯一文件名的 wchar_t 类型的指针;
  • 如果出现错误,则返回 NULL

4.2 演示示例

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

#define MAX_PATH 300

int main()
{
    wchar_t filename[L_tmpnam];
    wchar_t *fullpath;
    FILE *fp;

    // 生成唯一的临时文件名
    if (_wtmpnam(filename) == NULL)
    {
        fwprintf(stderr, L"Failed to generate temp file name\n");
        return 1;
    }

    // 获取完整的文件路径
    fullpath = _wfullpath(NULL, filename, MAX_PATH);
    if (fullpath == NULL)
    {
        fwprintf(stderr, L"Failed to get full path for temp file\n");
        return 1;
    }

    wprintf(L"Temp file path: %ls\n", fullpath);

    // 打开文件进行写操作
    fp = _wfopen(filename, L"w");
    if (fp == NULL)
    {
        fwprintf(stderr, L"Failed to open temp file for writing\n");
        return 1;
    }

    // 写入一些数据
    fwprintf(fp, L"This is some sample text.\n");

    // 关闭文件
    fclose(fp);

    return 0;
}

4.3 运行结果

在这里插入图片描述

在这里插入图片描述

5. _wtof

5.1 函数说明

函数声明函数功能
double _wtof(const wchar_t *str);将一个宽字符串转换为浮点数

参数:

  • str : 待转换的宽字符串

5.2 演示示例

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

int main()
{
    const wchar_t *str = L"3.14159";
    double num;

    // 将字符串转换为浮点数
    num = _wtof(str);

    wprintf(L"String: %ls\n", str);
    wprintf(L"Number: %lf\n", num);

    return 0;
}

5.3 运行结果

在这里插入图片描述

6. _wtof_l

6.1 函数说明

函数声明函数功能
double _wtof_l(const wchar_t *str, _locale_t locale);用于将一个宽字符串转换为浮点数,并使用不同的本地化环境

参数:

  • str : 待转换的宽字符串
  • locale : 要使用的本地化环境。如果传递 NULL 指针,则使用当前本地化环境

6.2 演示示例

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

int main()
{
    const wchar_t *str = L"3.14159";
    double num;
    _locale_t locale;

    // 使用 C 本地化环境进行转换
    locale = _create_locale(LC_ALL, "C");
    num = _wtof_l(str, locale);
    _free_locale(locale);

    wprintf(L"String: %ls\n", str);
    wprintf(L"Number (using C locale): %lf\n", num);

    // 使用中国本地化环境进行转换
    locale = _create_locale(LC_NUMERIC, "zh-CN");
    num = _wtof_l(str, locale);
    _free_locale(locale);

    wprintf(L"Number (using Chinese locale): %lf\n", num);

    return 0;
}

6.3 运行结果

在这里插入图片描述

7. _wtoi

7.1 函数说明

函数声明函数功能
int _wtoi(const wchar_t *str);用于将一个宽字符串转换为整数

参数:

  • str : 待转换的宽字符串

7.2 演示示例

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

int main()
{
    const wchar_t *str = L"314159";
    int num;

    // 将字符串转换为整数
    num = _wtoi(str);

    wprintf(L"String: %ls\n", str);
    wprintf(L"Number: %d\n", num);

    return 0;
}

7.3 运行结果

在这里插入图片描述

8. _wtoi_l

8.1 函数说明

函数声明函数功能
int _wtoi_l(const wchar_t *str, _locale_t locale);用于将一个宽字符串转换为整数,并使用不同的本地化环境

参数:

  • str : 待转换的宽字符串
  • locale : 要使用的本地化环境。如果传递 NULL 指针,则使用当前本地化环境

8.2 演示示例

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

int main()
{
    const wchar_t *str = L"314159";
    int num;
    _locale_t locale;

    // 使用 C 本地化环境进行转换
    locale = _create_locale(LC_ALL, "C");
    num = _wtoi_l(str, locale);
    _free_locale(locale);

    wprintf(L"String: %ls\n", str);
    wprintf(L"Number (using C locale): %d\n", num);

    // 使用中文本地化环境进行转换
    locale = _create_locale(LC_NUMERIC, "zh-CN");
    num = _wtoi_l(str, locale);
    _free_locale(locale);

    wprintf(L"Number (using Chinese locale): %d\n", num);

    return 0;
}

8.3 运行结果

在这里插入图片描述

9. _wtol

9.1 函数说明

函数声明函数功能
long _wtol(const wchar_t *str);用于将一个宽字符串转换为长整形

参数:

  • str : 待转换的宽字符串

9.2 演示示例

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

int main()
{
    const wchar_t *str = L"1234567890";
    long num;

    // 将字符串转换为长整数
    num = _wtol(str);

    wprintf(L"String: %ls\n", str);
    wprintf(L"Number: %ld\n", num);

    return 0;
}

9.3 运行结果

在这里插入图片描述

10. _wtol_l

10.1 函数说明

函数声明函数功能
long _wtol_l(const wchar_t *str, _locale_t locale);用于将一个宽字符串转换为长整形,并使用不同的本地化环境

参数:

  • str : 待转换的宽字符串
  • locale : 要使用的本地化环境。如果传递 NULL 指针,则使用当前本地化环境

10.2 演示示例

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

int main()
{
    const wchar_t *str = L"1234567890";
    long num;
    _locale_t locale;

    // 使用 C 本地化环境进行转换
    locale = _create_locale(LC_ALL, "C");
    num = _wtol_l(str, locale);
    _free_locale(locale);

    wprintf(L"String: %ls\n", str);
    wprintf(L"Number (using C locale): %ld\n", num);

    // 使用中文本地化环境进行转换
    locale = _create_locale(LC_NUMERIC, "zh-CN");
    num = _wtol_l(str, locale);
    _free_locale(locale);

    wprintf(L"Number (using Chinese locale): %ld\n", num);

    return 0;
}

10.3 运行结果

在这里插入图片描述

11. _wsopen

11.1 函数说明

函数声明函数功能
int _wsopen(const wchar_t *filename, int oflag, int shflag, int pmode);用于打开指定文件

参数:

  • filename : 要打开的文件名
  • oflag : 打开文件的方式,可以是如下值之一或组合使用:
    • _O_RDONLY :以只读方式打开文件
    • _O_WRONLY :以只写方式打开文件
    • _O_RDWR :以读写方式打开文件
    • _O_CREAT :如果文件不存在,则创建该文件
    • _O_TRUNC :如果文件已存在,则截断该文件
    • _O_EXCL :与 _O_CREAT 配合使用,确保创建的文件是原来不存在的
  • shflag : 共享方式,仅在 oflag 中包括 _O_CREAT 标志时有效。可以是如下值之一:
    • _SH_DENYRW :拒绝其他程序读取或写入打开的文件
    • _SH_DENYWR :拒绝其他程序写入打开的文件
    • _SH_DENYRD :拒绝其他程序读取打开的文
    • _SH_SHARE_DENYRW :允许其他程序只读打开打开的文件
    • _SH_SHARE_DENYWR :允许其他程序只写打开的文件
    • _SH_SHARE_DENYRD :允许其他程序读取打开的文件
  • pmode : 权限模式,仅在 oflag 中包括 _O_CREAT 标志时有效。该参数指定新文件访问权限的位掩码

11.2 演示示例

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

int main()
{
    const wchar_t *filename = L"test.txt";
    int file;

    // 打开文件以进行写入
    file = _wsopen(filename, _O_WRONLY | _O_CREAT | _O_TRUNC, _SH_DENYRW, _S_IREAD | _S_IWRITE);
    if (file == -1) 
    {
        wprintf(L"Unable to open the file.\n");
        return 1;
    }

    // 写入数据到文件
    const wchar_t *data = L"Hello, huazie!";
    int len = wcslen(data);
    int written = _write(file, data, len * sizeof(wchar_t));
    if (written != len * sizeof(wchar_t)) 
    {
        wprintf(L"Error writing to the file.\n");
        return 1;
    }

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

    wprintf(L"Data written to the file successfully!\n");

    return 0;
}

11.3 运行结果

在这里插入图片描述

在这里插入图片描述

12. _wsopen_s

12.1 函数说明

函数声明函数功能
errno_t _wsopen_s(int *pfh, const wchar_t *filename, int oflag, int shflag, int pmode);打开指定文件的安全版本,它避免了一些漏洞和错误,提高了程序的安全性

参数:

  • pfh : 存储打开文件的句柄
  • filename : 要打开的文件名或路径
  • oflag : 打开文件的方式和访问模式,可以使用 _O_RDONLY_O_WRONLY_O_RDWR_O_CREAT_O_TRUNC 等常量进行组合
  • shflag : 共享模式,可以使用 _SH_DENYRW_SH_DENYWR_SH_DENYRD 等常量进行组合
  • pmode : 权限标志,例如 _S_IREAD_S_IWRITE

12.2 演示示例

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

int main()
{
    int fileHandle;
    errno_t err = _wsopen_s(&fileHandle, L"example.txt", _O_RDWR | _O_CREAT, _SH_DENYRW, _S_IREAD | _S_IWRITE);

    if (err != 0) 
    {
        printf("Failed to open file.\n");
        return err;
    }

    char buffer[20] = "Hello, huazie!";
    if (_write(fileHandle, buffer, sizeof(buffer)) == -1) 
    {
        printf("Failed to write to file.\n");
    }

    if (_close(fileHandle) == -1) 
    {
        printf("Failed to close file.\n");
    }

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023 Vue开发者的React入门

Vue 和 React 都是流行的 JavaScript 框架&#xff0c;它们在组件化、数据绑定等方面有很多相似之处 本文默认已有现代前端开发(Vue)背景&#xff0c;关于 组件化、前端路由、状态管理 概念不会过多介绍 0基础建议详细阅读 Thinking in React-官方文档 了解 React 的设计哲学 R…

彻底理解粘性定位 - position: sticky(IT枫斗者)

彻底理解粘性定位 - position: sticky 介绍 粘性定位可以被认为是相对定位(position: relative)和固定定位(position: fixed)的混合。元素在跨越特定阈值前为相对定位&#xff0c;之后为固定定位。例如: .sticky-header { position: sticky; top: 10px; }在 视口滚动到元素…

【JavaWeb】--05.Request和Response、JSP、会话技术

文章目录 Request和Response1.概述2.Request对象2.1 Request继承体系2.2Request获取请求数据2.3 IDEA创建Servlet2.4 请求参数中文乱码问题POST请求解决方案GET请求解决方案 2.5 Request请求转发 3.Response对象3.1 Response设置响应数据功能介绍3.2 Response请求重定向3.3 路径…

【全网首测】5G随身Wi-Fi —— 中兴U50 Pro

说到随身Wi-Fi&#xff0c;大家应该都不陌生。 它是一个专门将移动信号转换成Wi-Fi信号的设备&#xff0c;经常被用于旅行和出差场景&#xff0c;也被人们亲切地称为“上网宝”。 现在&#xff0c;我们已经全面进入了5G时代&#xff0c;随身Wi-Fi也升级迭代&#xff0c;出现了支…

人工智能的界面革命,消费者与企业互动的方式即将发生变化。

本文来源于 digitalnative.substack.com/p/ais-interface-revolution 描述了一种社会现象&#xff1a; 随着真实友谊的减少和虚拟友谊的增加&#xff0c;越来越多的人开始将AI聊天机器人视为自己的朋友&#xff0c;甚至建立了深厚的情感纽带。这可能与当前人们越来越孤独的现实…

面向“伙伴+华为”体系,华为产品力的变与不变

在日前举办的“华为中国合作伙伴大会2023”上&#xff0c;华为面向政企市场提出了建设“伙伴华为”体系的发展方向。可想而知&#xff0c;接下来会有更多伙伴加入这一体系&#xff0c;也会有更多客户可以借由这个体系加速完成自身的数字化转型和智能化升级。而产品与技术&#…

luaplus Windows编译(一)

前言 LuaPlus是Lua的C增强&#xff0c;也就是说&#xff0c;LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C进行合作&#xff0c;是比较好的一个选择。 1:准备 luaplus_all 下载地址&#xff1a;https://github.com/jjensen/luaplus51-all jamplus 下载地址 https://gi…

基于神经网络算法的鱼类迁徙轨迹拟合研究

本试验采用HTI Model 291便携型声学标签接收系统,包括的基本部件有:291便携型声学标签接收器1台,590型水听器4根,最新795型声学标签40枚,490-LP 型标签编程器1台,690系列电缆400m,492微型声学标签探测器1台,115VAC型滤波器1台,TagProgrammer 、MarkTags和AcousticTag专…

30个数据科学工作中最常用的 Python 包

Python 可以说是最容易入门的编程语言&#xff0c;在numpy&#xff0c;scipy等基础包的帮助下&#xff0c;对于数据的处理和机器学习来说Python可以说是目前最好的语言。 在各位大佬和热心贡献者的帮助下Python拥有一个庞大的社区支持技术发展&#xff0c;开发两个各种 Python…

Oracle中数据导出成HTML的操作实践

spool是Oracle中将数据到成文件常用的一种工具&#xff0c;但它的强大&#xff0c;不仅仅是数据的导出&#xff0c;在格式和内容上&#xff0c;还可以自定义&#xff0c;甚至生成像AWR一样的统计报告。 参考《SQL*Plus Users Guide and Reference》中第7章"Generating HTM…

光纤仿真相关求解——光纤芯层和包层电磁场分布求解

要求解光纤中的电磁场分布&#xff0c;就要构建合适的物理模型 将光纤假设为圆柱状的波导&#xff0c;求解满足均匀原型介质波导边界条件的麦克斯韦方程组&#xff0c;即可 z分量的亥姆霍兹方程为&#xff1a; 对应在圆柱坐标系下为&#xff1a; 用分离变量法求解Ez&#xff…

如果你不想工作了,先做这3件事

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 英国作家毛姆有句名言&#xff1a;“我从来不会厌倦生活&#xff0c;只是厌倦了那些毫无生气的生活方式。”把这句话稍微修改一下&#xff0c;放在职场也无比适用“我并不厌倦工作,只是厌倦了那些毫无…

第10章_创建和管理表

第10章_创建和管理表 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步。只有正确地把数据存储起来&#xff0c;我们才能进行有效的处理和分析。否则&#xff0c;只能是一团乱麻&#xff0c;无从下手。 那么&#xff0c;怎样才能把用户各种经营相关的、纷繁复…

从零玩转设计模式之建造者模式-jianzaozhemoshi

title: 从零玩转设计模式之建造者模式 date: 2022-12-08 18:15:30.898 updated: 2022-12-23 15:35:58.428 url: https://www.yby6.com/archives/jianzaozhemoshi categories: - 设计模式 tags: - 设计模式 - 建造者模式 什么是建造者模式? 建造者模式是一种软件设计模式&…

突发!OpenAI 重磅发布 ChatGPT iOS 客户端!无须手续费,直接开通Plus。

大家好&#xff0c;我是GG哥&#xff01; 今天凌晨&#xff0c;OpenAI又重磅宣布推出ChatGPT的 iOS移动版本。也就是说&#xff0c;从今天开始iOS用户将可以在手机和iPad上免费下载和使用ChatGPT。 整体来说&#xff0c;iOS移动端的ChatGPT主打简洁流畅的风格&#xff0c;全力提…

Qt C++5.9开发指南

第1章 认识Qt 1.1 Qt简介 1、Qt是一套应用程序开发类库&#xff0c;但与MFC不同&#xff0c;Qt是跨平台开发类库。 2、跨平台意味着只需要编写一次程序&#xff0c;在不同平台上无需改动或只是需要少许改动后再编译&#xff0c;就可以形成不同平台上运行的版本。 1.2 Qt的获取与…

Python中的字典学习笔记

字典的格式&#xff1a;{"key":"value"} key表示数据的含义&#xff0c;value表示对应的数据的值字典是一种可变的数据类型&#xff0c;从python3.7开始&#xff0c;字典是有序的。 字典创建的方式 1、通过{}&#xff0c;要使用key:value的格式&#xff0c…

​编程教室的文章是用什么库完成的?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; Python 的一大特色是其丰富的模块&#xff0c;基本上只要你能想到的常见开发需求&#xff0c;都能找到别人已经实现的库直接使用&#xff0…

图的拓扑排序与关键路径

拓扑排序与关键路径是有向无环图上的应用。两种算法使用同一种动态规划的思想&#xff0c;因此关键路径的代码几乎和拓扑排序完全一样。 &#xff08;一&#xff09;拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序&#xff0c;是将G中所有顶点排成一…

由浅入深Netty入门案例

目录 1 概述1.1 Netty 是什么&#xff1f;1.2 Netty 的作者1.3 Netty 的地位1.4 Netty 的优势 2 Hello World2.1 目标2.2 服务器端2.3 客户端2.4 流程梳理2.5 提示 1 概述 1.1 Netty 是什么&#xff1f; Netty is an asynchronous event-driven network application framework…