当前位置: 首页 > news >正文

学习记录第二十二天

time函数与localtime函数

在Linux环境下使用C语言处理时间,通常会涉及到几个重要的头文件和函数。主要的头文件是 <time.h>,它包含了处理时间的各种函数和数据结构。
1. 数据结构
  1.time_t: 一个类型定义,用于存储时间值,通常表示为从1970年1月1日00:00:00 UTC到现在的秒数。
  2.struct tm: 包含了本地时间的各个组成部分,如年、月、日、时、分、秒等。
2. 函数
  1.time(): 返回当前时间的时间值,类型为time_t。
  2.localtime(): 将time_t类型的值转换为本地时间的struct tm。
3. 示例程序
下面是一个简单的C语言程序,用于获取并显示当前的本地时间:

#include <stdio.h>
#include <time.h>int main() {time_t rawtime;struct tm * timeinfo;char buffer[80]; // 用于存储时间字符串// 获取当前时间的时间值time(&rawtime);// 将时间值转换为本地时间的struct tmtimeinfo = localtime(&rawtime);return 0;
}

4. 说明
  1.time(&rawtime)函数调用将当前时间的时间值存储在rawtime变量中。
  2.localtime(&rawtime)函数调用将rawtime转换为本地时间的struct tm,存储在timeinfo中。
 

ctime函数

用于将time_t类型的时间值转换为可读的字符串形式。这个函数定义在<time.h>头文件中,并返回一个指向以null结尾的字符串的指针,该字符串包含了按照本地时间格式化的日期和时间信息。
函数原型如下:

char *ctime(const time_t *timer);

  1.timer: 指向time_t类型的指针,包含了要转换的时间值。
  2.返回值:指向以null结尾的字符串的指针,包含了格式化的日期和时间信息。
ctime函数返回的字符串通常具有以下格式:
Www Mmm dd HH:MM:SS YYYY\n\0其中Www表示星期几的缩写,Mmm表示月份的缩写,dd表示日期,HH:MM:SS表示时间,YYYY表示年份,字符串以换行符结束。
例如,如果您想获取当前时间并将其转换为字符串,可以使用以下代码:

#include <stdio.h>
#include <time.h>int main() {time_t now;time(&now); // 获取当前时间的时间戳printf("当前时间是: %s", ctime(&now)); // 打印格式化的时间字符串return 0;
}

getpwuid函数

在C语言中,getpwuid函数用于获取指定用户ID(UID)的用户信息。该函数定义在<pwd.h>头文件中,并返回一个指向struct passwd结构的指针,该结构包含了用户的多种信息,如用户名、用户ID、群组ID、全名、家目录和登录Shell等。
函数原型如下:

#include <sys/types.h>
#include <pwd.h>struct passwd *getpwuid(uid_t uid);

  1.uid: 要查询的用户的用户ID。
  2.返回值:如果成功,返回一个指向struct passwd的指针;如果失败,返回NULL并设置errno以指示错误原因。

getgrgid函数

getgrgid函数用于获取指定组识别码(GID)的组信息。该函数定义在<grp.h>头文件中,并返回一个指向struct group的指针,该结构包含了组的各种信息,如组名、组密码、组ID以及组成员列表等。
函数原型如下:

#include <grp.h>
#include <sys/types.h>struct group *getgrgid(gid_t gid);

  1.gid: 要查询的组的组识别码。
  2.返回值:如果成功,返回一个指向struct group的指针;如果失败,返回NULL并设置errno以指示错误原因。symlink函数的作用和使用方法


symlink函数

在用于创建符号链接(symbolic link),也称为软链接。符号链接是一种特殊类型的文件,它包含了指向另一个文件或目录的路径名。与硬链接不同,符号链接可以跨越文件系统,并且指向文件或目录的路径可以是相对的或绝对的。如果符号链接指向的目标文件被移动或删除,链接本身会变成悬空链接(dangling link)。
函数原型

#include <unistd.h>int symlink(const char *oldpath, const char *newpath);

  1.oldpath: 指向要链接到的现有文件或目录的路径的字符串。
  2.newpath: 指向新创建的符号链接的路径的字符串。
返回值
如果函数调用成功,返回0;如果失败,返回-1。

remove

int remove(const char *pathname);

功能: 删除一个文件
参数: pathname:删除文件的路径
返回值:
    成功返回0
    失败返回-1

rename //mv rename

int  rename(const  char  *oldpath,  const char *newpath);

功能:将一个老的路径名改为新的路径
参数:oldpath:老路径名
        newpath:新路径名
返回值:
    成功返回0
    失败返回-1

link函数

link函数在C语言中用于创建硬链接(hard link)。与符号链接(symbolic link)不同,硬链接实际上是文件系统中指向相同文件数据的多个文件名。每个硬链接都直接指向文件的inode,这意味着所有硬链接都共享相同的文件数据。删除一个硬链接不会影响其他硬链接,直到文件的最后一个链接被删除,文件数据才会被释放。
函数原型

#include <unistd.h>int link(const char *oldpath, const char *newpath);

  1.oldpath: 指向现有文件的路径的字符串。
  2.newpath: 指向新硬链接的路径的字符串。
返回值
如果函数调用成功,返回0;如果失败,返回-1。truncate函数的作用和使用


truncate函数

在C语言中用于将指定文件的大小截断到指定的长度,即使文件当前的大小大于指定长度,文件的内容也会被截断,而小于指定长度的部分将被填充为未初始化的数据。truncate函数可以用于文件的大小调整,但需要注意的是,它不会改变文件的内容,仅调整文件的大小。
函数原型

#include <sys/types.h>
#include <unistd.h>int truncate(const char *path, off_t length);

  1.path: 指向要截断的文件的路径的字符串。
  2.length: 指定文件截断后的长度。
返回值
如果函数调用成功,truncate函数返回0;如果失败,则返回-1。

perror 函数

这是一个在C语言中用于打印系统错误消息的函数。perror 函数会打印出一个错误消息,该消息描述了最后一次系统或库函数调用遇到的错误。这个函数通常在调用另一个函数后发生错误,并且该函数设置了全局变量 errno 来指示错误类型时使用。
perror函数的使用方法

#include <stdio.h>void perror(const char *s);

  1.s: 一个指向字符串的指针,该字符串会在错误消息前打印出来,通常用来提供上下文信息。
如果在程序中遇到错误,可以这样使用 perror 函数:

if (someFunctionCall() == -1) {perror("An error occurred");
}

这段代码会打印 "An error occurred" 后跟由 errno 决定的具体错误信息。strerror函数的作用和使用

strerror函数

在C语言中用于将错误码转换为可读的错误信息字符串。当系统调用或库函数执行失败时,通常会设置全局变量errno来指示错误类型。strerror函数接受一个errno值作为参数,并返回一个指向静态分配的错误信息字符串的指针。这个字符串描述了错误的性质,可以帮助开发者或用户理解发生了什么问题。
函数原型

#include <string.h>const char *strerror(int errnum);

  1.errnum:错误码,通常是errno的值。
  2.返回值:一个指向错误信息字符串的指针。
使用示例

#include <stdio.h>
#include <string.h>
#include <errno.h>int main() {FILE *fp = fopen("/nonexistentfile", "r");if (fp == NULL) {// 使用strerror获取错误信息const char *errorMessage = strerror(errno);printf("Failed to open the file: %s\n", errorMessage);}return 0;
}

在这个例子中,如果fopen函数失败,errno将被设置,然后strerror函数被用来获取与该错误码相关联的错误信息字符串,并打印出来。

error函数

error函数是一个宏,用于打印错误信息和退出程序。它的原型如下:

#include <error.h>void error(int status, int errnum, const char *fmt, ...);

status是程序的退出状态码,errnum是错误码,fmt是可变数量的参数列表,用于构造错误信息。如果status非零,程序会立即退出。

相关文章:

学习记录第二十二天

time函数与localtime函数 在Linux环境下使用C语言处理时间&#xff0c;通常会涉及到几个重要的头文件和函数。主要的头文件是 <time.h>&#xff0c;它包含了处理时间的各种函数和数据结构。 1. 数据结构 1.time_t: 一个类型定义&#xff0c;用于存储时间值&#xff0c…...

红酒与艺术展览:品味艺术与风味的双重盛宴

当艺术的魅力与红酒的醇香交织在一起&#xff0c;一场别开生面的盛宴便悄然展开。今天&#xff0c;让我们一同走进这场红酒与艺术展览的邂逅&#xff0c;品味艺术与风味的双重盛宴。 一、艺术展览的瑰丽世界 艺术展览&#xff0c;如同一座瑰丽的宝库&#xff0c;汇聚了无数艺…...

1Panel配置

1. 脚本安装 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh2. 配置镜像加速 在容器-> 配置中设置&#xff0c;否则安装软件会失败。 https://docker.211678.top https://docker.1panel.live …...

场外期权是如何定价的?场外期权定价的基本原理是什么?

场外期权的定价通常基于多种复杂的因素&#xff0c;以下是一些场外期权主要的影响因素和常见的定价方法&#xff1a; 影响场外期权定价的因素&#xff1a; 标的资产价格&#xff1a;标的资产当前的市场价格是定价的基础。标的资产价格波动率&#xff1a;波动率反映了标的资产价…...

vue中数据持久化

在Vue中&#xff0c;数据持久化通常指的是将Vue组件或应用中的数据保存到用户的浏览器或设备的存储中&#xff0c;以便在用户的会话&#xff08;session&#xff09;或跨会话&#xff08;如重新加载页面或重新打开浏览器&#xff09;中保持这些数据。Vue本身并不直接提供数据持…...

小白零基础学数学建模系列-Day3-线性回归模型的构建与评估

文章目录 1 线性回归基础1.1 线性回归概念与应用1.2 数学原理与推导1.3 线性回归的实现 2 案例分析&#xff1a;房价预测2.1 加载数据2.2 数据预处理2.3 探索性数据分析2.4 观察选择特征2.5 准备训练模型的数据2.6 将数据拆分为训练集和测试集2.7 训练和测试模型2.8 模型评估 3…...

Flutter中的 extended_nested_scroll_view 库:介绍与使用指南

在开发Flutter应用时&#xff0c;处理复杂的滚动效果是一项常见的任务。Flutter提供了NestedScrollView来实现可折叠的应用栏与滚动列表的结合&#xff0c;但在某些情况下&#xff0c;NestedScrollView可能不够强大。为了解决这些问题&#xff0c;我们可以使用extended_nested_…...

Elasticsearch 综合搜索案例解析

Elasticsearch 是一个功能强大的搜索引擎&#xff0c;它不仅支持全文搜索&#xff0c;还提供了排序、分页、高亮显示等多种搜索结果处理功能。通过综合使用这些功能&#xff0c;我们可以构建出丰富而高效的搜索应用。本文将通过一个具体的案例&#xff0c;介绍如何在 Elasticse…...

Web存储革命:揭秘JavaScript的会话存储(sessionStorage)

标题&#xff1a;Web存储革命&#xff1a;揭秘JavaScript的会话存储&#xff08;sessionStorage&#xff09; 在当今的Web开发中&#xff0c;状态管理和数据持久化是构建交互式应用的关键。JavaScript提供了多种客户端存储解决方案&#xff0c;其中会话存储&#xff08;sessio…...

基于python的百度迁徙迁入、迁出数据分析(九)

副标题&#xff1a;从百度迁徙数据看——人口虹吸效应 人口虹吸效应&#xff1a;人口虹吸效应是指大城市或中心城市因其经济、文化、教育、医疗等资源的优势&#xff0c;吸引周边地区的人口、资本和其他资源向其集中的一种现象。这种效应在城市化进程中尤其明显&#xff0c;通…...

2025上海礼品展 华东礼品工艺品展览会

2025第25届上海国际礼品及家居用品展 在璀璨繁华的上海&#xff0c;一场盛大的礼品盛宴即将拉开帷幕。2025年上海国际礼品及 家居用品展览会(简称“华礼展”)&#xff0c;作为华东地区乃至全国范围内备受瞩目的礼 品行业盛会&#xff0c;将于2025年6月29日至7月1日在上海新国…...

Flink开发(一):概述与基础

目录 1. Flink概述 1.1 什么是Flink&#xff1f; 1.2 Flink的主要特点 2. Flink的核心组件 2.1 Flink架构 2.2 数据流模型 3. Flink的基础应用 3.1 开发环境配置 3.3 数据源和数据接收器 4. Flink的高级功能 4.1 状态管理与容错 4.2 窗口操作 5. Flink的应用场景 …...

GD32E503实现串口中断收发功能

如有技术问题及技术需求请加作者微信! 源码下载链接:代码下载 亲测可用实现GD32E503库函数串口数据收发功能: #include "gd32e50x.h" #include "gd32e503v_eval.h" #include "systick.h" #include <stdio.h> #include "user_uart…...

照片怎么提取文字?分享5种简单好用的提取方法

在我们日常的学习或者是办公中&#xff0c;往往会使用到大量的图片文件&#xff0c;而在这些图片中往往蕴含着丰富的文字信息&#xff0c;但手动输入不仅费时费力&#xff0c;还容易出错。如果能够一键提取出图片中的文字就会大大提高工作效率&#xff0c;下面给大家分享5种提取…...

最佳云服务器推荐:三丰云免费虚拟主机和云服务器

随着云计算技术的不断发展&#xff0c;越来越多的企业和个人开始将业务迁移到云端。在这个过程中&#xff0c;选择一款稳定、高效、性价比高的云服务器至关重要。今天&#xff0c;我就为大家推荐一家备受好评的云服务器提供商——三丰云&#xff08;https://www.sanfengyun.com…...

IPKISS Tutorial 目录(目前 45 篇 持续更新中,部分教程尚未制作成目录)

IPKISS Tutorial 目录 芯片版图绘制教程IPKISS Tutorial&#xff08;5&#xff09;Basis直接创建结构&#xff08;1&#xff09;PCell&#xff08;3&#xff09;Layer and Template(Trace Template)&#xff08;2&#xff09;参数查询&#xff08;2&#xff09;Lumerical API&a…...

加强混合工作时代的组织网络安全态势

随着组织转向采用和实施混合和远程工作模式&#xff0c;网络安全的重要性从未如此重要。虽然工作场所的这种演变提供了灵活性并有望提高生产力&#xff0c;但它也带来了组织无法忽视的无数网络安全挑战。多样化工作环境的整合需要强大的安全措施、创新的保护策略和警惕的文化&a…...

vivado报错:file ended before end of clause

最近在学习Xilinx FPGA时&#xff0c;遇到 Vivado 报错如下图所示&#xff1a; 刚开始&#xff0c;看到错误是在第1行代码中出现的&#xff0c;我的第一反应是该行代码写错了&#xff0c;然后搜了搜语法&#xff0c;发现没错。 分析报错信息发现&#xff0c;该错误应该是和文件…...

基于asp.net的webform框架的校园点餐系统源码

今天给大家分享一套基于asp.net的webform框架的网页点餐系统&#xff0c;适合课程设计参考及其自己学习&#xff0c;需要的小伙伴自己参考下&#xff0c;下载链接我放在后面了 主要功功能 系统的主要功能包含&#xff1a;前端点餐页面、加入购物车、商品食物浏览、我的购 物车…...

俞敏洪,真窝囊?

文&#xff5c;琥珀食酒社 作者 | 璇子 大家都被俞敏洪骗了 当年《中国合伙人》一播出 俞敏洪竟抱怨黄晓明说&#xff1a; “你把我演得太窝囊&#xff01;” 那俞敏洪真的不窝囊吗&#xff1f; 他培养出董宇辉 让他赚了近6亿 结果人没留住、公司也送了人 还要被丈母娘…...

Ix开源平台:基于Kubernetes的私有云与家庭实验室一体化管理方案

1. 项目概述与核心价值最近在折腾一个叫Ix的开源项目&#xff0c;它来自ix-infrastructure这个组织。乍一看这个名字&#xff0c;你可能觉得有点抽象&#xff0c;但如果你对自托管、家庭实验室、私有云或者想找一个更现代、更易用的 TrueNAS 替代品感兴趣&#xff0c;那这个项目…...

从零构建个人知识库:Go+React全栈项目RocketNotes实战解析

1. 项目概述&#xff1a;从零到一构建个人知识管理工具最近在整理个人笔记和代码片段时&#xff0c;发现了一个挺有意思的开源项目fynnfluegge/rocketnotes。乍一看这个名字&#xff0c;可能会联想到火箭&#xff08;Rocket&#xff09;和笔记&#xff08;Notes&#xff09;的结…...

解锁你的音乐宝藏:ncmdump让网易云音乐文件自由播放

解锁你的音乐宝藏&#xff1a;ncmdump让网易云音乐文件自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你精心收藏的网易云音乐只能在特定客户端播放时&#xff0c;那种被束缚的感觉是否让你感到无奈&#xff1f;想象一下…...

FPGA高速ADC数据采集实战——基于AD9253 LVDS接口与ISERDESE2设计

1. AD9253高速ADC核心特性解析 AD9253这颗14位125MSPS四通道ADC芯片&#xff0c;在通信和医疗成像领域堪称经典。我经手过的多个雷达项目中&#xff0c;它的信噪比表现总能带来惊喜——75.3dBFS的实测数据比手册标称值还要稳定。但真正让工程师们又爱又恨的&#xff0c;是它那个…...

Redis增强工具包:封装分布式锁、缓存模板与监控的最佳实践

1. 项目概述&#xff1a;一个Redis开发者的“瑞士军刀”在分布式系统和高并发场景下&#xff0c;Redis几乎成了标配。但用久了你会发现&#xff0c;官方客户端虽然稳定&#xff0c;但在日常开发、调试、运维中&#xff0c;总有些“不够顺手”的地方。比如&#xff0c;想批量按模…...

Godot游戏自动化构建与发布:基于GitHub Actions与Docker的CI/CD实践

1. 项目概述&#xff1a;当Godot遇上CI/CD如果你是一名独立游戏开发者&#xff0c;或者在一个小团队里负责Godot引擎的项目&#xff0c;那么“构建”和“部署”这两个词&#xff0c;大概率是你开发流程里最头疼的环节之一。手动导出项目到不同平台&#xff08;Windows、Linux、…...

技术解构:逆向工程视角下的百度网盘下载链接解析机制

技术解构&#xff1a;逆向工程视角下的百度网盘下载链接解析机制 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 想象一下&#xff0c;当你收到朋友分享的百度网盘链接时&…...

基于 Next.js 的无头电商架构实战:从 Vercel Commerce 看现代全栈开发

1. 项目概述&#xff1a;一个面向未来的全栈电商起点如果你最近在琢磨着用 Next.js 搞一个电商网站&#xff0c;或者想找一个现代、开箱即用的全栈电商模板来启动项目&#xff0c;那你大概率已经听说过vercel/commerce这个仓库了。它不是某个具体的电商平台&#xff0c;而是一个…...

基于MCP协议构建AI金融数据可视化服务器:从原理到实战部署

1. 项目概述&#xff1a;一个为AI智能体提供实时金融数据可视化的MCP服务器最近在折腾AI智能体&#xff08;Agent&#xff09;的生态&#xff0c;发现一个挺有意思的痛点&#xff1a;当你想让AI帮你分析股票、基金或者加密货币时&#xff0c;它往往只能给你干巴巴的数字和文字描…...

基于Taotoken统一API开发支持多模型切换的智能对话应用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 基于Taotoken统一API开发支持多模型切换的智能对话应用 应用场景类&#xff0c;场景是开发一个需要支持用户自由选择或系统自动切换…...