网站建设团队名称,潍坊最新通知,最值钱的域名列表,高端网页开发平台在C语言中#xff0c;string.h头文件是标准库中的一个重要部分#xff0c;它定义了一系列操作字符串和字符数组的函数。本文将详细介绍string.h头文件中包含的22个函数#xff0c;并提供每个函数的完整示例代码。
简介
string.h头文件定义了一个变…在C语言中string.h头文件是标准库中的一个重要部分它定义了一系列操作字符串和字符数组的函数。本文将详细介绍string.h头文件中包含的22个函数并提供每个函数的完整示例代码。
简介
string.h头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。在使用这些函数之前我们首先来了解一下相关的库变量和宏。
库变量
string.h头文件中定义的变量类型如下
size_t: 无符号整数类型通常用于表示内存块的大小。它是 sizeof 关键字的结果。
库宏
string.h头文件中定义的宏如下
NULL: 表示空指针常量的值。
接下来我们将逐个介绍这22个函数并给出每个函数的示例代码。
库函数
1. void *memchr(const void *str, int c, size_t n)
在字符串的前 n 个字节中搜索第一次出现字符 c 的位置。
#include stdio.h
#include string.hint main() {const char str[] Hello, world!;const char ch o;const size_t n strlen(str);const char *result memchr(str, ch, n);if (result ! NULL) {printf(%c found at position: %ld\n, ch, result - str);} else {printf(%c not found in the string.\n, ch);}return 0;
}2. int memcmp(const void *str1, const void *str2, size_t n)
比较两个内存区域的前 n 个字节。
#include stdio.h
#include string.hint main() {const char str1[] abc;const char str2[] abd;const size_t n 2;int result memcmp(str1, str2, n);if (result 0) {printf(str1 is less than str2\n);} else if (result 0) {printf(str1 is greater than str2\n);} else {printf(str1 is equal to str2\n);}return 0;
}3. void *memcpy(void *dest, const void *src, size_t n)
从源地址复制 n 个字节到目标地址。
#include stdio.h
#include string.hint main() {char src[] Hello, world!;char dest[20];memcpy(dest, src, strlen(src) 1);printf(Copied string: %s\n, dest);return 0;
}4. void *memmove(void *dest, const void *src, size_t n)
从源地址复制 n 个字节到目标地址处理重叠的情况。
#include stdio.h
#include string.hint main() {char str[] memmove can be very useful......;memmove(str 20, str 15, 11);printf(%s\n, str);return 0;
}5. void *memset(void *str, int c, size_t n)
将字符 c 复制到字符串的前 n 个字符。
#include stdio.h
#include string.hint main() {char str[] Hello, world!;memset(str 7, *, 5);printf(%s\n, str);return 0;
}6. char *strcat(char *dest, const char *src)
将 src 追加到 dest 的末尾。
#include stdio.h
#include string.hint main() {char dest[20] Hello, ;const char src[] world!;strcat(dest, src);printf(%s\n, dest);return 0;
}7. char *strncat(char *dest, const char *src, size_t n)
将 src 的最多 n 个字符追加到 dest 的末尾。
#include stdio.h
#include string.hint main() {char dest[20] Hello, ;const char src[] world!;strncat(dest, src, 3);printf(%s\n, dest);return 0;
}8. char *strchr(const char *str, int c)
在字符串中搜索第一次出现字符 c 的位置。
#include stdio.h
#include string.hint main() {const char str[] This is a sample string;const char ch s;const char *result strchr(str, ch);if (result ! NULL) {printf(%c found at position: %ld\n, ch, result - str);} else {printf(%c not found in the string.\n, ch);}return 0;
}9. int strcmp(const char *str1, const char *str2)
比较两个字符串。
#include stdio.h
#include string.hint main() {const char str1[] abc;const char str2[] abcd;int result strcmp(str1, str2);if (result 0) {printf(str1 is less than str2\n);} else if (result 0) {printf(str1 is greater than str2\n);} else {printf(str1 is equal to str2\n);}return 0;
}10. int strncmp(const char *str1, const char *str2, size_t n)
比较两个字符串的前 n 个字符。
#include stdio.h
#include string.hint main() {const char str1[] abc;const char str2[] abcd;int result strncmp(str1, str2, 3);if (result 0) {printf(str1 is less than str2\n);} else if (result 0) {printf(str1 is greater than str2\n);} else {printf(str1 is equal to str2\n);}return 0;
}11. int strcoll(const char *str1, const char *str2)
根据当前区域设置比较两个字符串。
#include stdio.h
#include string.h
#include locale.hint main() {setlocale(LC_COLLATE, en_US.utf8);const char str1[] apple;const char str2[] banana;int result strcoll(str1, str2);if (result 0) {printf(str1 is less than str2\n);} else if (result 0) {printf(str1 is greater than str2\n);} else {printf(str1 is equal to str2\n);}return 0;
}12. char *strcpy(char *dest, const char *src)
复制一个字符串。
#include stdio.h
#include string.hint main() {char src[] Hello, world!;char dest[20];strcpy(dest, src);printf(Copied string: %s\n, dest);return 0;
}13. char *strncpy(char *dest, const char *src, size_t n)
复制一个字符串的前 n 个字符。
#include stdio.h
#include string.hint main() {char src[] Hello, world!;char dest[20];strncpy(dest, src, 5);dest[5] \0; // Null-terminate the stringprintf(Copied string: %s\n, dest);return 0;
}14. size_t strcspn(const char *str1, const char *str2)
返回字符串 str1 开头连续不含字符串 str2 中的字符的长度。
#include stdio.h
#include string.hint main() {const char str1[] 1234567890;const char str2[] aeiou;size_t len strcspn(str1, str2);printf(Length until first vowel: %ld\n, len);return 0;
}15. char *strerror(int errnum)
返回错误号 errnum 对应的错误消息字符串。
#include stdio.h
#include string.h
#include errno.hint main() {FILE *file;file fopen(nonexistentfile.txt, r);if (file NULL) {perror(Error);printf(Error message: %s\n, strerror(errno));}return 0;
}16. size_t strlen(const char *str)
返回字符串的长度不包括空结束字符。
#include stdio.h
#include string.hint main() {const char str[] Hello, world!;size_t len strlen(str);printf(Length of the string: %ld\n, len);return 0;
}17. char *strpbrk(const char *str1, const char *str2)
返回字符串 str1 中第一个匹配字符串 str2 中字符的字符的位置。
#include stdio.h
#include string.hint main() {const char str1[] This is a sample string;const char str2[] aeiou;char *result strpbrk(str1, str2);if (result ! NULL) {printf(First vowel found at: %ld\n, result - str1);} else {printf(No vowels found in the string.\n);}return 0;
}18. char *strrchr(const char *str, int c)
返回字符串中最后一次出现字符 c 的位置。
#include stdio.h
#include string.hint main() {const char str[] This is a sample string;const char ch s;const char *result strrchr(str, ch);if (result ! NULL) {printf(%c found at position: %ld\n, ch, result - str);} else {printf(%c not found in the string.\n, ch);}return 0;
}19. size_t strspn(const char *str1, const char *str2)
返回字符串 str1 中第一个不在字符串 str2 中出现的字符的下标。
#include stdio.h
#include string.hint main() {const char str1[] abcde;const char str2[] aeiou;size_t len strspn(str1, str2);printf(Length of initial segment containing vowels: %ld\n, len);return 0;
}20. char *strstr(const char *haystack, const char *needle)
在字符串 haystack 中查找第一次出现字符串 needle 的位置。
#include stdio.h
#include string.hint main() {const char haystack[] This is a sample string;const char needle[] sample;char *result strstr(haystack, needle);if (result ! NULL) {printf(%s found at position: %ld\n, needle, result - haystack);} else {printf(%s not found in the string.\n, needle);}return 0;
}21. char *strtok(char *str, const char *delim)
分解字符串为一组字符串使用 delim 作为分隔符。
#include stdio.h
#include string.hint main() {char str[] This is a sample string;const char delim[] ;char *token strtok(str, delim);while (token ! NULL) {printf(%s\n, token);token strtok(NULL, delim);}return 0;
}22. size_t strxfrm(char *dest, const char *src, size_t n)
根据当前的区域设置转换字符串 src 的前 n 个字符并将它们放置在字符串 dest 中。
#include stdio.h
#include string.h
#include locale.hint main() {setlocale(LC_COLLATE, en_US.utf8);const char src[] banana;char dest[20];size_t len strxfrm(dest, src, sizeof(dest));printf(Transformed string: %s\n, dest);return 0;
}结论
通过本文我们详细介绍了C语言标准库中string.h头文件提供的22个函数并提供了每个函数的完整示例代码。这些函数在处理字符串和字符数组时非常有用可以帮助开发人员轻松地进行字符串操作和处理。