哈尔滨做网站的,帝国cms怎么做网站声明,现在去云南需要做核酸吗,手机如何制作ppt目录 简介
库变量
库宏
库函数 简介
库变量
库宏
库函数 time.h
简介
C 标准库中的 time.h 头文件提供了处理时间和日期的函数和类型定义。它包含了一些结构体和函数#xff0c;可以用于获取系统当前的日期、时间#xff0c;以及进行日期和时间的计算…目录 简介
库变量
库宏
库函数 简介
库变量
库宏
库函数 time.h
简介
C 标准库中的 time.h 头文件提供了处理时间和日期的函数和类型定义。它包含了一些结构体和函数可以用于获取系统当前的日期、时间以及进行日期和时间的计算等操作。
在 time.h 头文件中常用的类型包括 struct tm 结构体它用来表示一个日历时间包括年、月、日、时、分、秒等成员time_t 类型用来表示时间值通常是一个整数代表从某一固定时间点通常是 1970 年 1 月 1 日经过的秒数。
在 time.h 中还包含了一系列函数比如用于获取当前时间的函数 time()用于将时间转换为字符串表示的函数 strftime()以及一些用于日期和时间运算的函数比如计算时间差的函数 difftime() 等。
总的来说time.h 头文件提供了一系列函数和类型可以帮助程序员在 C 语言中方便地处理日期和时间进行时间的获取、格式化输出、计算等操作。
库变量
下面是头文件 time.h 中定义的变量类型
size_t无符号整数类型通常用于表示对象的大小。在 C 语言中使用 sizeof 运算符可以返回对象或类型的大小其结果就是 size_t 类型。clock_t用于存储处理器时间的类型。它通常被用来度量程序执行所花费的处理器时间比如通过 clock() 函数来获取程序运行时间的信息。time_t用于存储日历时间的类型。time_t 类型通常被用来表示从某个固定时间点通常是 1970 年 1 月 1 日经过的秒数常用于时间的表示和计算。struct tm用来保存时间和日期的结构体。它包含了年、月、日、时、分、秒等成员可以方便地表示一个特定的时间点。在 C 语言中通常使用 struct tm 结构体进行时间的表示和计算比如获取系统当前时间以及进行时间格式的转换等操作。
tm 结构的定义如下
struct tm {int tm_sec; /* 秒范围从 0 到 59 */int tm_min; /* 分范围从 0 到 59 */int tm_hour; /* 小时范围从 0 到 23 */int tm_mday; /* 一月中的第几天范围从 1 到 31 */int tm_mon; /* 月范围从 0 到 11 */int tm_year; /* 自 1900 年起的年数 */int tm_wday; /* 一周中的第几天范围从 0 到 6 */int tm_yday; /* 一年中的第几天范围从 0 到 365 */int tm_isdst; /* 夏令时 */
};库宏
下面是头文件 time.h 中定义的宏
NULL这个宏表示空指针常量的值。在 C 语言中通常使用 NULL 来表示一个空指针即指向地址为 0 的指针。CLOCKS_PER_SEC这个宏表示每秒的处理器时钟个数。在 C 语言中clock() 函数返回的是处理器时钟运行的周期数通过将其除以 CLOCKS_PER_SEC就可以得到程序运行的秒数。
库函数
下面是头文件 time.h 中定义的函数
asctime()将结构体 tm 中的时间转换为字符串并返回一个指向该字符串的指针。clock()返回程序执行所花费的处理器时钟数通常用来度量程序的执行时间。ctime()将从 1970 年 1 月 1 日起经过的秒数转换为当地时间并返回一个表示当地时间的字符串。difftime()计算两个时间之间的差异以秒为单位。gmtime()将从 1970 年 1 月 1 日起经过的秒数转换为协调世界时UTC或格林威治标准时间GMT并返回一个指向表示时间的结构体的指针。localtime()将从 1970 年 1 月 1 日起经过的秒数转换为本地时间并返回一个指向表示时间的结构体的指针。mktime()将一个表示时间的结构体转换为从 1970 年 1 月 1 日起经过的秒数。strftime()将一个表示时间的结构体按照指定的格式进行格式化并将结果存储在一个字符串中。time()获取当前时间并将其编码成 time_t 格式返回。
以下是一个示例代码演示如何使用 time.h 中的函数来处理日期和时间
#include stdio.h
#include time.hint main() {time_t current_time;struct tm *time_info;char time_string[80];// 获取当前时间current_time time(NULL);// 转换为本地时间time_info localtime(current_time);// 格式化时间为字符串strftime(time_string, sizeof(time_string), %Y-%m-%d %H:%M:%S, time_info);// 打印当前时间printf(当前时间%s\n, time_string);return 0;
}在这个示例代码中首先包含了 stdio.h 和 time.h 头文件。然后在 main() 函数中进行了以下操作
声明了一个变量 current_time用于保存当前时间的时间戳。声明了一个指向 struct tm 结构体的指针 time_info用于保存转换后的本地时间。声明了一个字符数组 time_string用于存储格式化后的时间字符串。使用 time(NULL) 函数获取当前时间的时间戳并将其赋值给 current_time。使用 localtime(current_time) 函数将时间戳转换为本地时间并将结果保存在 time_info 中。使用 strftime() 函数将本地时间格式化为字符串并将结果存储在 time_string 中。%Y-%m-%d %H:%M:%S 是格式化字符串的格式用于指定输出的时间格式。使用 printf() 函数打印当前时间。
string.h
简介
C 标准库中的 string.h 头文件提供了许多用于处理字符串的函数和宏定义它们可以帮助开发人员进行字符串操作、内存操作以及一些通用的数组操作。这些函数和宏定义使得在 C 语言中处理字符串和内存操作变得更加便捷和高效。
库变量
下面是头文件 string.h 中定义的变量类型
序号变量 描述1size_t 这是无符号整数类型它是 sizeof 关键字的结果。
库宏
下面是头文件 string.h 中定义的宏
序号宏 描述1 NULL 宏NULL在头文件string.h中被定义为一个空指针常量的值。它通常用于表示指针变量没有指向任何有效对象也可以用于初始化指针变量。在C语言中宏NULL的定义如下 #define NULL ((void *)0) 这里的(void *)表示一个通用的指针类型0则表示指针的值为空。因此当我们将一个指针变量初始化为NULL时表示该指针不指向任何有效的内存地址。 需要注意的是虽然NULL在头文件string.h中定义但它实际上是C语言标准库中的定义在其他头文件中同样可以使用。
库函数
下面是头文件 string.h 中定义的函数
序号函数 描述1void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c一个无符号字符的位置。2int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 个字节进行比较。3void *memcpy(void *dest, const void *src, size_t n) 从 src 复制 n 个字符到 dest。4void *memmove(void *dest, const void *src, size_t n) 另一个用于从 src 复制 n 个字符到 dest 的函数。5void *memset(void *str, int c, size_t n) 复制字符 c一个无符号字符到参数 str 所指向的字符串的前 n 个字符。6char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。7char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾直到 n 字符长度为止。8char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c一个无符号字符的位置。9int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。10int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较最多比较前 n 个字节。11int strcoll(const char *str1, const char *str2) 把 str1 和 str2 进行比较结果取决于 LC_COLLATE 的位置设置。12char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。13char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest最多复制 n 个字符。14size_t strcspn(const char *str1, const char *str2) 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。15char *strerror(int errnum) 从内部数组中搜索错误号 errnum并返回一个指向错误消息字符串的指针。16size_t strlen(const char *str) 计算字符串 str 的长度直到空结束字符但不包括空结束字符。17char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符不包含空结束字符。也就是说依次检验字符串 str1 中的字符当被检验字符在字符串 str2 中也包含时则停止检验并返回该字符位置。18char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c一个无符号字符的位置。19size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。20char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle不包含空结束字符的位置。21char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串delim 为分隔符。22size_t strxfrm(char *dest, const char *src, size_t n) 根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符并把它们放置在字符串 dest 中。
以下是一个简单的示例代码演示了如何使用 string.h 中的一些函数来进行字符串操作
#include stdio.h
#include string.hint main() {char str1[20] Hello, ;char str2[20] world!;char str3[20];int result;// 使用 strcat 将 str2 追加到 str1 的末尾strcat(str1, str2);printf(strcat: %s\n, str1);// 使用 strncpy 复制 str1 的前 6 个字符到 str3 中strncpy(str3, str1, 6);str3[6] \0; // 需要手动添加字符串结束符printf(strncpy: %s\n, str3);// 使用 strlen 获取字符串长度printf(strlen: %lu\n, strlen(str1));// 使用 strcmp 比较 str1 和 str2 是否相等result strcmp(str1, str2);if (result 0) {printf(strcmp: str1 等于 str2\n);} else {printf(strcmp: str1 不等于 str2\n);}// 使用 memset 将 str3 的前 5 个字符设置为 Amemset(str3, A, 5);printf(memset: %s\n, str3);// 使用 memcpy 将 str2 的前 5 个字符复制到 str3 中memcpy(str3, str2, 5);str3[5] \0; // 需要手动添加字符串结束符printf(memcpy: %s\n, str3);// 使用 strchr 在 str1 中查找字符 ochar* ptr strchr(str1, o);printf(strchr: %s\n, ptr);// 使用 strstr 在 str1 中查找字符串 worldptr strstr(str1, world);printf(strstr: %s\n, ptr);// 使用 strtok 分割字符串char str4[] hello,world,how,are,you;char* token strtok(str4, ,);while (token ! NULL) {printf(strtok: %s\n, token);token strtok(NULL, ,);}return 0;
}让我们编译并运行上面的程序这将产生以下结果
strcat: Hello, world!
strncpy: Hello,
strlen: 13
strcmp: str1 不等于 str2
memset: AAAAA,
memcpy: world
strchr: o, world!
strstr: world!
strtok: hello
strtok: world
strtok: how
strtok: are
strtok: you