当前位置: 首页 > 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非零,程序会立即退出。

http://www.lryc.cn/news/423106.html

相关文章:

  • 红酒与艺术展览:品味艺术与风味的双重盛宴
  • 1Panel配置
  • 场外期权是如何定价的?场外期权定价的基本原理是什么?
  • vue中数据持久化
  • 小白零基础学数学建模系列-Day3-线性回归模型的构建与评估
  • Flutter中的 extended_nested_scroll_view 库:介绍与使用指南
  • Elasticsearch 综合搜索案例解析
  • Web存储革命:揭秘JavaScript的会话存储(sessionStorage)
  • 基于python的百度迁徙迁入、迁出数据分析(九)
  • 2025上海礼品展 华东礼品工艺品展览会
  • Flink开发(一):概述与基础
  • GD32E503实现串口中断收发功能
  • 照片怎么提取文字?分享5种简单好用的提取方法
  • 最佳云服务器推荐:三丰云免费虚拟主机和云服务器
  • IPKISS Tutorial 目录(目前 45 篇 持续更新中,部分教程尚未制作成目录)
  • 加强混合工作时代的组织网络安全态势
  • vivado报错:file ended before end of clause
  • 基于asp.net的webform框架的校园点餐系统源码
  • 俞敏洪,真窝囊?
  • 速盾:高防ip和cdn哪个好?
  • 论文分享|MLLMs中多种模态(图像/视频/音频/语音)的tokenizer梳理
  • 如何使用 Puppeteer 和 Node.JS 进行 Web 抓取?
  • JDK 8 有哪些新特性?
  • C++ Win32API 贪吃蛇游戏
  • 【Python实现代码视频/视频转字符画/代码风格视频】
  • 基于级联深度学习算法的前列腺病灶检测在双参数MRI中的评估| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
  • 基于STM32开发的智能门铃系统
  • 【WebRTC指南】远程视频流
  • 前端构建URL的几种方法比对,以及函数实现
  • 场外个股期权如何发出行权指令?