学习记录第二十二天
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语言处理时间,通常会涉及到几个重要的头文件和函数。主要的头文件是 <time.h>,它包含了处理时间的各种函数和数据结构。 1. 数据结构 1.time_t: 一个类型定义,用于存储时间值,…...
红酒与艺术展览:品味艺术与风味的双重盛宴
当艺术的魅力与红酒的醇香交织在一起,一场别开生面的盛宴便悄然展开。今天,让我们一同走进这场红酒与艺术展览的邂逅,品味艺术与风味的双重盛宴。 一、艺术展览的瑰丽世界 艺术展览,如同一座瑰丽的宝库,汇聚了无数艺…...
1Panel配置
1. 脚本安装 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh2. 配置镜像加速 在容器-> 配置中设置,否则安装软件会失败。 https://docker.211678.top https://docker.1panel.live …...
场外期权是如何定价的?场外期权定价的基本原理是什么?
场外期权的定价通常基于多种复杂的因素,以下是一些场外期权主要的影响因素和常见的定价方法: 影响场外期权定价的因素: 标的资产价格:标的资产当前的市场价格是定价的基础。标的资产价格波动率:波动率反映了标的资产价…...
vue中数据持久化
在Vue中,数据持久化通常指的是将Vue组件或应用中的数据保存到用户的浏览器或设备的存储中,以便在用户的会话(session)或跨会话(如重新加载页面或重新打开浏览器)中保持这些数据。Vue本身并不直接提供数据持…...
小白零基础学数学建模系列-Day3-线性回归模型的构建与评估
文章目录 1 线性回归基础1.1 线性回归概念与应用1.2 数学原理与推导1.3 线性回归的实现 2 案例分析:房价预测2.1 加载数据2.2 数据预处理2.3 探索性数据分析2.4 观察选择特征2.5 准备训练模型的数据2.6 将数据拆分为训练集和测试集2.7 训练和测试模型2.8 模型评估 3…...
Flutter中的 extended_nested_scroll_view 库:介绍与使用指南
在开发Flutter应用时,处理复杂的滚动效果是一项常见的任务。Flutter提供了NestedScrollView来实现可折叠的应用栏与滚动列表的结合,但在某些情况下,NestedScrollView可能不够强大。为了解决这些问题,我们可以使用extended_nested_…...
Elasticsearch 综合搜索案例解析
Elasticsearch 是一个功能强大的搜索引擎,它不仅支持全文搜索,还提供了排序、分页、高亮显示等多种搜索结果处理功能。通过综合使用这些功能,我们可以构建出丰富而高效的搜索应用。本文将通过一个具体的案例,介绍如何在 Elasticse…...
Web存储革命:揭秘JavaScript的会话存储(sessionStorage)
标题:Web存储革命:揭秘JavaScript的会话存储(sessionStorage) 在当今的Web开发中,状态管理和数据持久化是构建交互式应用的关键。JavaScript提供了多种客户端存储解决方案,其中会话存储(sessio…...
基于python的百度迁徙迁入、迁出数据分析(九)
副标题:从百度迁徙数据看——人口虹吸效应 人口虹吸效应:人口虹吸效应是指大城市或中心城市因其经济、文化、教育、医疗等资源的优势,吸引周边地区的人口、资本和其他资源向其集中的一种现象。这种效应在城市化进程中尤其明显,通…...
2025上海礼品展 华东礼品工艺品展览会
2025第25届上海国际礼品及家居用品展 在璀璨繁华的上海,一场盛大的礼品盛宴即将拉开帷幕。2025年上海国际礼品及 家居用品展览会(简称“华礼展”),作为华东地区乃至全国范围内备受瞩目的礼 品行业盛会,将于2025年6月29日至7月1日在上海新国…...
Flink开发(一):概述与基础
目录 1. Flink概述 1.1 什么是Flink? 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种简单好用的提取方法
在我们日常的学习或者是办公中,往往会使用到大量的图片文件,而在这些图片中往往蕴含着丰富的文字信息,但手动输入不仅费时费力,还容易出错。如果能够一键提取出图片中的文字就会大大提高工作效率,下面给大家分享5种提取…...
最佳云服务器推荐:三丰云免费虚拟主机和云服务器
随着云计算技术的不断发展,越来越多的企业和个人开始将业务迁移到云端。在这个过程中,选择一款稳定、高效、性价比高的云服务器至关重要。今天,我就为大家推荐一家备受好评的云服务器提供商——三丰云(https://www.sanfengyun.com…...
IPKISS Tutorial 目录(目前 45 篇 持续更新中,部分教程尚未制作成目录)
IPKISS Tutorial 目录 芯片版图绘制教程IPKISS Tutorial(5)Basis直接创建结构(1)PCell(3)Layer and Template(Trace Template)(2)参数查询(2)Lumerical API&a…...
加强混合工作时代的组织网络安全态势
随着组织转向采用和实施混合和远程工作模式,网络安全的重要性从未如此重要。虽然工作场所的这种演变提供了灵活性并有望提高生产力,但它也带来了组织无法忽视的无数网络安全挑战。多样化工作环境的整合需要强大的安全措施、创新的保护策略和警惕的文化&a…...
vivado报错:file ended before end of clause
最近在学习Xilinx FPGA时,遇到 Vivado 报错如下图所示: 刚开始,看到错误是在第1行代码中出现的,我的第一反应是该行代码写错了,然后搜了搜语法,发现没错。 分析报错信息发现,该错误应该是和文件…...
基于asp.net的webform框架的校园点餐系统源码
今天给大家分享一套基于asp.net的webform框架的网页点餐系统,适合课程设计参考及其自己学习,需要的小伙伴自己参考下,下载链接我放在后面了 主要功功能 系统的主要功能包含:前端点餐页面、加入购物车、商品食物浏览、我的购 物车…...
俞敏洪,真窝囊?
文|琥珀食酒社 作者 | 璇子 大家都被俞敏洪骗了 当年《中国合伙人》一播出 俞敏洪竟抱怨黄晓明说: “你把我演得太窝囊!” 那俞敏洪真的不窝囊吗? 他培养出董宇辉 让他赚了近6亿 结果人没留住、公司也送了人 还要被丈母娘…...
Ix开源平台:基于Kubernetes的私有云与家庭实验室一体化管理方案
1. 项目概述与核心价值最近在折腾一个叫Ix的开源项目,它来自ix-infrastructure这个组织。乍一看这个名字,你可能觉得有点抽象,但如果你对自托管、家庭实验室、私有云或者想找一个更现代、更易用的 TrueNAS 替代品感兴趣,那这个项目…...
从零构建个人知识库:Go+React全栈项目RocketNotes实战解析
1. 项目概述:从零到一构建个人知识管理工具最近在整理个人笔记和代码片段时,发现了一个挺有意思的开源项目fynnfluegge/rocketnotes。乍一看这个名字,可能会联想到火箭(Rocket)和笔记(Notes)的结…...
解锁你的音乐宝藏:ncmdump让网易云音乐文件自由播放
解锁你的音乐宝藏:ncmdump让网易云音乐文件自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你精心收藏的网易云音乐只能在特定客户端播放时,那种被束缚的感觉是否让你感到无奈?想象一下…...
FPGA高速ADC数据采集实战——基于AD9253 LVDS接口与ISERDESE2设计
1. AD9253高速ADC核心特性解析 AD9253这颗14位125MSPS四通道ADC芯片,在通信和医疗成像领域堪称经典。我经手过的多个雷达项目中,它的信噪比表现总能带来惊喜——75.3dBFS的实测数据比手册标称值还要稳定。但真正让工程师们又爱又恨的,是它那个…...
Redis增强工具包:封装分布式锁、缓存模板与监控的最佳实践
1. 项目概述:一个Redis开发者的“瑞士军刀”在分布式系统和高并发场景下,Redis几乎成了标配。但用久了你会发现,官方客户端虽然稳定,但在日常开发、调试、运维中,总有些“不够顺手”的地方。比如,想批量按模…...
Godot游戏自动化构建与发布:基于GitHub Actions与Docker的CI/CD实践
1. 项目概述:当Godot遇上CI/CD如果你是一名独立游戏开发者,或者在一个小团队里负责Godot引擎的项目,那么“构建”和“部署”这两个词,大概率是你开发流程里最头疼的环节之一。手动导出项目到不同平台(Windows、Linux、…...
技术解构:逆向工程视角下的百度网盘下载链接解析机制
技术解构:逆向工程视角下的百度网盘下载链接解析机制 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 想象一下,当你收到朋友分享的百度网盘链接时&…...
基于 Next.js 的无头电商架构实战:从 Vercel Commerce 看现代全栈开发
1. 项目概述:一个面向未来的全栈电商起点如果你最近在琢磨着用 Next.js 搞一个电商网站,或者想找一个现代、开箱即用的全栈电商模板来启动项目,那你大概率已经听说过vercel/commerce这个仓库了。它不是某个具体的电商平台,而是一个…...
基于MCP协议构建AI金融数据可视化服务器:从原理到实战部署
1. 项目概述:一个为AI智能体提供实时金融数据可视化的MCP服务器最近在折腾AI智能体(Agent)的生态,发现一个挺有意思的痛点:当你想让AI帮你分析股票、基金或者加密货币时,它往往只能给你干巴巴的数字和文字描…...
基于Taotoken统一API开发支持多模型切换的智能对话应用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 基于Taotoken统一API开发支持多模型切换的智能对话应用 应用场景类,场景是开发一个需要支持用户自由选择或系统自动切换…...
