string.h 是 C 语言中处理字符串和内存操作的标准头文件。它包含了许多常用的字符串处理函数和内存操作函数。
主要函数分类
字符串复制
1 2 3 4 5 6
| char* strcpy(char* dest, const char* src);
char* strncpy(char* dest, const char* src, size_t n);
|
字符串连接
1 2 3 4 5
| char* strcat(char* dest, const char* src);
char* strncat(char* dest, const char* src, size_t n);
|
字符串比较
1 2 3 4 5 6
| int strcmp(const char* s1, const char* s2);
int strncmp(const char* s1, const char* s2, size_t n);
|
字符串查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| char* strchr(const char* s, int c);
char* strrchr(const char* s, int c);
char* strstr(const char* haystack, const char* needle);
size_t strspn(const char* s, const char* accept);
size_t strcspn(const char* s, const char* reject);
|
字符串分割
1 2 3 4 5 6
| char* strtok(char* s, const char* delim);
char* strtok_r(char* s, const char* delim, char** saveptr);
|
字符串长度
1 2
| size_t strlen(const char* s);
|
内存操作函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| void* memcpy(void* dest, const void* src, size_t n);
void* memmove(void* dest, const void* src, size_t n);
void* memset(void* s, int c, size_t n);
int memcmp(const void* s1, const void* s2, size_t n);
void* memchr(const void* s, int c, size_t n);
|
实用示例
示例 1:基础字符串操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <stdio.h> #include <string.h> int main() { char str1[20] = "Hello"; char str2[20] = "World"; char buffer[50]; strcpy(buffer, str1); printf("复制: %s\n", buffer); strcat(buffer, " "); strcat(buffer, str2); printf("连接: %s\n", buffer); int cmp = strcmp(str1, str2); printf("比较: %d\n", cmp); printf("长度: %lu\n", strlen(buffer)); return 0; }
|
示例 2:字符串查找和分割
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <stdio.h> #include <string.h>
int main() { char text[] = "apple,banana,cherry,date"; char *token; printf("分割结果:\n"); token = strtok(text, ","); while (token != NULL) { printf(" %s\n", token); token = strtok(NULL, ","); } char str[] = "The quick brown fox jumps over the lazy dog"; char *pos = strstr(str, "brown"); if (pos) { printf("找到 'brown',位置: %ld\n", pos - str); } return 0; }
|
示例 3:内存操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include <stdio.h> #include <string.h>
int main() { int arr1[5] = {1, 2, 3, 4, 5}; int arr2[5]; memcpy(arr2, arr1, sizeof(arr1)); printf("复制数组: "); for (int i = 0; i < 5; i++) { printf("%d ", arr2[i]); } printf("\n"); memset(arr2, 0, sizeof(arr2)); printf("清零后: "); for (int i = 0; i < 5; i++) { printf("%d ", arr2[i]); } printf("\n"); return 0; }
|