目录
简介
库变量
库宏
库函数
简介
库变量
库宏
库函数
C 标准库中的
在
在
总的来说,
下面是头文件 time.h 中定义的变量类型:
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 中定义的宏:
下面是头文件 time.h 中定义的函数:
以下是一个示例代码,演示如何使用 time.h 中的函数来处理日期和时间,
#include
#include
int main() {
time_t current_time;
struct tm *time_info;
char time_string[80];
// 获取当前时间
current_time = time(NULL);
// 转换为本地时间
time_info = localtime(¤t_time);
// 格式化时间为字符串
strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", time_info);
// 打印当前时间
printf("当前时间:%s\n", time_string);
return 0;
}
在这个示例代码中,首先包含了
C 标准库中的
下面是头文件 string.h 中定义的变量类型:
序号 | 变量 & 描述 |
---|---|
1 | size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 |
下面是头文件 string.h 中定义的宏:
序号 | 宏 & 描述 |
---|---|
1 | NULL 这里的(void *)表示一个通用的指针类型,0则表示指针的值为空。因此,当我们将一个指针变量初始化为NULL时,表示该指针不指向任何有效的内存地址。 需要注意的是,虽然NULL在头文件string.h中定义,但它实际上是C语言标准库中的定义,在其他头文件中同样可以使用。 |
下面是头文件 string.h 中定义的函数:
序号 | 函数 & 描述 |
---|---|
1 | void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。 |
2 | int memcmp(const void *str1, const void *str2, size_t n) 把 str1 和 str2 的前 n 个字节进行比较。 |
3 | void *memcpy(void *dest, const void *src, size_t n) 从 src 复制 n 个字符到 dest。 |
4 | void *memmove(void *dest, const void *src, size_t n) 另一个用于从 src 复制 n 个字符到 dest 的函数。 |
5 | void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。 |
6 | char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 |
7 | char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。 |
8 | char *strchr(const char *str, int c) 在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。 |
9 | int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。 |
10 | int strncmp(const char *str1, const char *str2, size_t n) 把 str1 和 str2 进行比较,最多比较前 n 个字节。 |
11 | int strcoll(const char *str1, const char *str2) 把 str1 和 str2 进行比较,结果取决于 LC_COLLATE 的位置设置。 |
12 | char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。 |
13 | char *strncpy(char *dest, const char *src, size_t n) 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。 |
14 | size_t strcspn(const char *str1, const char *str2) 检索字符串 str1 开头连续有几个字符都不含字符串 str2 中的字符。 |
15 | char *strerror(int errnum) 从内部数组中搜索错误号 errnum,并返回一个指向错误消息字符串的指针。 |
16 | size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。 |
17 | char *strpbrk(const char *str1, const char *str2) 检索字符串 str1 中第一个匹配字符串 str2 中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。 |
18 | char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。 |
19 | size_t strspn(const char *str1, const char *str2) 检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。 |
20 | char *strstr(const char *haystack, const char *needle) 在字符串 haystack 中查找第一次出现字符串 needle(不包含空结束字符)的位置。 |
21 | char *strtok(char *str, const char *delim) 分解字符串 str 为一组字符串,delim 为分隔符。 |
22 | size_t strxfrm(char *dest, const char *src, size_t n) 根据程序当前的区域选项中的 LC_COLLATE 来转换字符串 src 的前 n 个字符,并把它们放置在字符串 dest 中。 |
以下是一个简单的示例代码,演示了如何使用 string.h 中的一些函数来进行字符串操作:
#include
#include
int 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 个字符设置为 'A'
memset(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 中查找字符 'o'
char* ptr = strchr(str1, 'o');
printf("strchr: %s\n", ptr);
// 使用 strstr 在 str1 中查找字符串 "world"
ptr = 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